连接到oracle数据库不起作用

时间:2017-09-12 10:50:56

标签: c# oracle visual-studio connection-string

我希望通过visual studio连接到Oracle数据库,并通过其数据填充datagridview。我对Oracle一无所知。我只有SID,用户名和密码。 这是代码:

  using Oracle.DataAccess.Client;
  private void Form1_Load(object sender, EventArgs e)
    {
        var select = "SELECT * FROM tblProject";
         conn.ConnectionString = "Data Source=(DESCRIPTION="
         + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.3.50.205)(PORT=1521)))"
         + "(CONNECT_DATA=(SERVER=DEDICATED)(SID=sid)));"
         + "User Id=username;Password=pass;";

    }
    using (OracleConnection connection = new OracleConnection(conn.ConnectionString))
        {
            OracleDataAdapter adapter = new OracleDataAdapter(select, connection);

            try
            {
                connection.Open();                    
                var ds = new DataSet();
                adapter.Fill(ds);
                dataGridView1.ReadOnly = true;
                dataGridView1.DataSource = ds.Tables[0];
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }


        }

但连接无法打开?问题出在哪儿? 谢谢

2 个答案:

答案 0 :(得分:0)

您可以尝试使用以下代码吗?看起来你在没有使用连接描述符

的tnsnames.ora文件的情况下使用ODP.NET
using Oracle.DataAccess.Client;
  private void Form1_Load(object sender, EventArgs e)
    {
        var select = "SELECT * FROM tblProject";
         conn.ConnectionString = "Data Source=(DESCRIPTION="
         + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.3.50.205)(PORT=1521)))"
         + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=sid)));"
         + "User Id=username;Password=pass;";


    using (OracleConnection connection = new OracleConnection(conn.ConnectionString))
        {
            connection.Open(); 
            OracleDataAdapter adapter = new OracleDataAdapter(select, connection);

            try
            {
                var ds = new DataSet();
                adapter.Fill(ds);
                dataGridView1.ReadOnly = true;
                dataGridView1.DataSource = ds.Tables[0];
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }


        }

}

在"使用连接描述符"检查此文档。部分 https://docs.oracle.com/cd/B28359_01/win.111/b28375/featConnecting.htm

答案 1 :(得分:0)

市场上有几种DataConnectors。至少来自微软,甲骨文和DevArt。连接字符串不完全兼容。因此,在寻找示例时,您必须注意。

我喜欢尽可能使用ezconnect:

用户名/密码@ [//]主持人[:port] [/ service_name]

少打字 - >减少错误。一旦我不得不连接到一个拒绝旧语法的测试系统,但接受了ezconnect。我从来没有弄明白为什么。