连接Oracle数据库的方法(DotNet)

2009-11-26 11:01:08 |

现场有消息说无法在客户的机器上安装Oracle客户端,客户不让安装任何软件,我很不忿的说了一句“靠,又要用数据库又不让安装客户端,又他妈一帮官僚”。不忿归不忿,还是需要解决这个问题。

网上摘抄然后我自己加了两个。

主要是测试第四个方法,我找了一下,所需要的三个文件需要在Oracle的站点下载一个客户端http://www.oracle.com/technology/software/products/database/xe/htdocs/102xewinsoft.html

下载Oracle XE Client就可以得到这三个文件,比较BT的是,OraOCLXE10.DLL这个文件居然有47M,真不知道 Oracle是怎么想的。

然后我注意到这次的Oracle安装居然没有修改注册表,我原先的9i的客户端的注册表还在。

 

方法一:通过System.Data.OracleClient(需要安装Oracle客户端并配置tnsnames.ora)

string strcnn = "User ID=lportal;Password=lportal;Data Source=zhbrserverORCL;";

System.Data.OracleClient.OracleConnection cnn = new System.Data.OracleClient.OracleConnection(strcnn);

cnn.Open();

MessageBox.Show(cnn.State.ToString());

cnn.Close();

方法二:通过System.Data.OracleClient(需要安装Oracle客户端不需配置tnsnames.ora)

string strcnn = "User ID=lportal;Password=lportal;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = zhbrserver)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))";

System.Data.OracleClient.OracleConnection cnn = new System.Data.OracleClient.OracleConnection(strcnn);

cnn.Open();

MessageBox.Show(cnn.State.ToString());

cnn.Close();

方法三:通过System.Data.OleDb和Oracle公司的驱动

string strcnn = "Provider=OraOLEDB.Oracle.1;User ID=lportal;Password=lportal;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = zhbrserver)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))";

System.Data.OleDb.OleDbConnection cnn = new System.Data.OleDb.OleDbConnection(strcnn);

cnn.Open();

MessageBox.Show(cnn.State.ToString());

cnn.Close();

方法四:通过System.Data.OleDb和微软公司的Oracle驱动

string strcnn = "Provider=MSDAORA.1;User ID=lportal;Password=lportal;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = zhbrserver)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))";

System.Data.OleDb.OleDbConnection cnn = new System.Data.OleDb.OleDbConnection(strcnn);

cnn.Open();

MessageBox.Show(cnn.State.ToString());

cnn.Close();

备注:

1、   XP操作系统已经安装了微软公司的Oracle驱动C:\Program Files\Common Files\System\Ole DB\msdaora.dll

2、   该驱动需要Oracle客户端的三个文件(oraocixe10.dll、oci.dll、ociw32.dll)方在System32下即可

方法五:使用ODP连接

1. 下載安裝ODP.NET(這里我安裝的是11.10的版本了)
2. 安裝完全成後會產生一序列文件。
3. 找到這個安裝目錄,打開文件夾C:\app\limin_he\product\11.1.0\client_1\Network\Admin在這個下面建立一個
  tnsnames.ora的文件,其內容可以參考其下的Sample目錄下面的配置
Oracle.Maxense =
(DESCRIPTION=
   (ADDRESS_LIST=
     (ADDRESS=
       (PROTOCOL=TCP)
       (HOST=192.168.123.66)
       (PORT=1521)
     )
   )
   (CONNECT_DATA=
     (SID=Maxense)
     (SERVER=DEDICATED)
   )
)
Oracle.Maxense為連接字符串名稱,可以隨便取
=後面的字符串可以在Enterprise Manager Console工具中連接數據庫後的TNS描述符中拷過來
4. 在asp.net項目中操作的話,先引用Oracle.DataAccess命名空間
5. 示例代碼:
   Oracle.DataAccess.Client.OracleConnection conn = new Oracle.DataAccess.Client.OracleConnection("DATA SOURCE=Oracle.Maxense;PERSIST SECURITY INFO=True;USER ID=LIMIN;password=000000");
   conn.Open();
   Oracle.DataAccess.Client.OracleCommand cmd = new Oracle.DataAccess.Client.OracleCommand(cmdText,conn);
   Oracle.DataAccess.Client.OracleDataReader reader = cmd.ExecuteReader();
   this.GridView1.DataSource = reader;
   this.GridView1.DataBind();

方法六:使用第三方驱动
第三方驱动有 Devart
下载驱动 http://www.devart.com/dotconnect/oracle/ 但是是商业版,需要Crack
连接格式 User ID=myUsername;Password=myPassword;Host=ora;Pooling=true;Min Pool Size=0;Max Pool Size=100;Connection Lifetime=0;
using Devart.Data.Oracle;
OracleConnection myConnection = new OracleConnection();
myConnection.ConnectionString = myConnectionString;
myConnection.Open();
//execute queries, etc
myConnection.Close();


Jeason Zhao (沈胜衣,斛律光) ------雪饮再现,一个人的江湖
我知道我是谁,我是沈胜衣,默默的活着,就像空气。

Comments (1) -

FranceMarrakech :

Only wanna pronounce that this is very cooperative, Acknowledges for taking your rhythm to communicate this. “We can’t many be heroes so celebrity has to perch on the hinder further applaud as they go by.” by Volition Rogers.

Add comment




biuquote
  • Comment
  • Preview
Loading