【问题标题】:Unable to insert row into table using an Oracle Connection无法使用 Oracle 连接将行插入表中
【发布时间】:2014-07-03 08:03:55
【问题描述】:

我想知道是什么问题,或者您对连接到 Oracle 的建议。我正在尝试这个,但是当我尝试插入值时,它不起作用。

我正在使用 Visual Web Developer 2008,当我在 Database Explorer 连接上添加数据库时,它正在工作。但是当我尝试通过此连接字符串进行连接时,它不起作用。我错过了什么?

我没有遇到异常,所以显然它运行良好。但是这段代码显然没有插入! id 列是 varchar(45)。我创建表“test”只是为了测试。

using System.Data;
using System.Data.OracleClient;

public partial class _Default : System.Web.UI.Page
{ 
    //string oradb = "Data Source=localhost;User ID=root;Password=jesua;Unicode=True;";
    String oracle = "User ID=root;Password=jesua;Unicode=True;Data Source=localhost;";
    OracleConnection con = new OracleConnection();

    public void Conectar() {
        try 
        {
            con.Close();
            con.ConnectionString = oracle;                 
            con.Open();
        }
        catch(Exception ex){
            throw new Exception("No Conecto " + ex);
        }  
    }

    public void desconectar() {
        // con.ConnectionString = oracle;
        con.Close();
    }

    public void agregar() {
        this.Conectar();
        OracleCommand query = new OracleCommand("INSERT INTO testing (id) VALUES ('testing')");
        query.ExecuteNonQuery();
        desconectar();           
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        try {
            agregar();
        }
        catch(Exception ex){
            Console.Write("No agrego " + ex);
        }
        TextBox1.Text = "Conected";
    }
}

--------------更新------

所以,

我找到了办法,

我希望这里的任何人将来都可以使用此代码...

此代码在 Oracle 和 asp.net C# 之间创建连接

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Oracle.DataAccess.Client; // ODP.NET Oracle managed provider
using Oracle.DataAccess.Types;

namespace proyecto
{
public partial class WebForm1 : System.Web.UI.Page
{
    public void dbconnect() {
        string oradb = "Data Source=localhost;User ID={Yoir ID};Password={Your Password};";

        OracleConnection conn = new OracleConnection(oradb); // C#
        conn.Open();
        OracleCommand cmd = new OracleCommand();
        cmd.Connection = conn;
        cmd.CommandText = "INSERT INTO TESTING(id) VALUES ('valor')"; 
        int rowsUpdated = cmd.ExecuteNonQuery(); 
        if (rowsUpdated == 0) 
         Console.Write("Record not inserted"); 
        else 
        Console.Write("Success!"); 
        conn.Dispose(); 
    }

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        this.dbconnect();

    }
   }
 }

祝你好运!

【问题讨论】:

  • 你们为什么投票反对我的帖子? pff...我只是在问我的问题...
  • @GrantWinney 谢谢,好吧,在控制台上没有显示任何东西,显然它运行良好。但是这段代码显然没有插入!,
  • @GrantWinney 是的,它是一个 varchar(45),我创建表测试只是为了测试建议

标签: c# asp.net sql oracle oracle11g


【解决方案1】:

适合我的连接字符串是

connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1522))  
(CONNECT_DATA=(SERVICE_NAME=XE)));User Id=system;Password=pass;"  
providerName="Oracle.DataAccess.Client"/>

您似乎缺少服务名称提供者名称。您可以在安装目录中的 tnsnames.ora 文件中找到 服务名称。还要确保您已正确安装 Oracle 11gODP.NET,将 Oracle.DataAccess.dll 的引用添加到您的项目中并添加Provider Name 在连接字符串中。

【讨论】:

    猜你喜欢
    • 2016-05-17
    • 2018-07-22
    • 1970-01-01
    • 2021-10-07
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    相关资源
    最近更新 更多