首页 > 代码库 > ADO.Net连接Oracle

ADO.Net连接Oracle

1、添加 Oracle.ManagedDataAccess.dll

2、连接Oracle的实例得添加到Oracle的监听器中,不然会报“ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务”的错,添加如下,本例使用的是Oracle10g,找到C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN下的lisener.org,打开后修改添加标红的部分

# listener.ora Network Configuration File: C:\oracle\product\10.2.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL)
      (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
      (SID_NAME = ORCL)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.121.130)(PORT = 1521))
    )
  )

  3、连接字符串:

string connStr = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.121.130)(PORT=1521))(CONNECT_DATA=http://www.mamicode.com/(SERVICE_NAME=ORCL)));Persist Security Info=True;User ID=scott;Password=tiger;";

其中Oracle数据库服务器IP:192.168.121.130

ServiceName:ORCL

用户名:scott

密码:tiger

4、查看Oracle的实例名,用sys作为dba登录,执行语句 select name from v$database;

5,C#代码

using System;
using System.Collections.Generic;
using System.Configuration;
using Oracle.ManagedDataAccess.Client;
using System.Linq;
using System.Text;

namespace ADOSample
{
    class Program
    {
        static void Main(string[] args)
        {          
            string connStr = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.121.130)(PORT=1521))(CONNECT_DATA=http://www.mamicode.com/(SERVICE_NAME=ORCL)));Persist Security Info=True;User ID=scott;Password=tiger;";
            using (OracleConnection conn = new OracleConnection(connStr))
            {
                string sql = "select * from dept ";
                conn.Open();
                using (OracleCommand cmd = new OracleCommand(sql, conn))
                {
                    using (OracleDataReader dataReader = cmd.ExecuteReader())
                    {
                        while (dataReader.Read())
                        {
                            string obj = (string)dataReader[1];
                            Console.WriteLine(obj);
                        }
                    }                    

                }
            }
            Console.ReadKey();
        }
    }
}

  

 

ADO.Net连接Oracle