无法使用Oracle Connection将行插入表中

时间:2014-05-15 03:19:48

标签: c# asp.net sql oracle oracle11g

我想知道问题是什么,或者您建议连接到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";
    }
}

-------------------------- UPDATE ------------------

所以,

我找到了做到这一点的方法,

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

此代码创建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();

    }
   }
 }

祝你好运!

1 个答案:

答案 0 :(得分:0)

适用于我的连接字符串是

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 11g ODP.NET ,将 Oracle.DataAccess.dll 的引用添加到项目中并添加连接字符串中的提供商名称