现场有消息说无法在客户的机器上安装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 (沈胜衣,斛律光) ------雪饮再现,一个人的江湖
我知道我是谁,我是沈胜衣,默默的活着,就像空气。