【问题标题】:Connecting to oracle Database wouldn't work无法连接到 oracle 数据库
【发布时间】:2017-09-12 10:50:55
【问题描述】:

我想通过 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);
            }


        }

但是连接打不开?问题出在哪里? 谢谢

【问题讨论】:

  • 您收到的错误信息是什么?
  • @Niladri:没什么。但是当我检查 connection.State 时它已关闭
  • 您可以将连接字符串中的sid 更改为SERVICE_NAME=sid 吗?还尝试在创建适配器之前打开连接,例如connection.Open();
  • 这里的conn 是什么,用于声明连接字符串,例如conn.ConnectionString

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


【解决方案1】:

市场上有多种 DataConnector。至少来自微软、甲骨文和 DevArt。连接字符串不完全兼容。所以在找例子的时候一定要注意。

我喜欢尽可能使用 ezconnect:

用户名/密码@[//]host[:port][/service_name]

少打字 -> 少错误。一旦我必须连接到拒绝旧语法但接受 ezconnect 的测试系统。我一直不明白为什么。

【讨论】:

    【解决方案2】:

    你能试试下面的代码吗?看起来您正在使用没有使用连接描述符的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 2020-02-12
      • 2012-03-14
      • 2015-01-08
      • 2019-10-18
      • 2020-01-02
      • 2023-04-09
      相关资源
      最近更新 更多