代码之家  ›  专栏  ›  技术社区  ›  nnmmss

连接到oracle数据库不起作用

  •  0
  • nnmmss  · 技术社区  · 8 年前

    我想通过visual studio连接到Oracle数据库,并通过其数据填充datagridview。我对甲骨文一无所知。我只有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 回复  |  直到 8 年前
        1
  •  0
  •   crumble    8 年前

    市场上有几种数据连接器。至少来自微软、甲骨文和德瓦特。连接字符串不完全兼容。所以你在找例子的时候一定要注意。

    只要可能,我喜欢使用ezconnect:

    小于类型->错误更少。有一次,我不得不连接到一个测试系统,该系统拒绝了旧语法,但接受了ezconnect。我一直不知道为什么。

        2
  •  0
  •   Niladri    8 年前

    你能试试下面的代码吗。看起来您正在使用ODP。NET没有tnsnames。使用连接描述符的ora文件

    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