现场有消息说无法在客户的机器上安装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();