早些时候微软在.net平台提供对oracle的支持,后来终止了支持,那么现在最好的办法自然是使用oracle自己提供的.net驱动了,而且比微软的方式更高效,访问效率更高。但是使用起来并不是一帆风顺,这里给出一个最最最简单的办法,重要的事情要说三遍。。。 从官网下载xcopy包
http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html 注意下载与自己对应oracle的版本,比如11g的oracle就下ODAC 11.2 Release 6应该是比较正确的,当然高版本有时候也能访问低版本的数据库,但是谁知道会发生什么灵异事件呢。 下载完整的包解压之后看看压缩包的内容如下
这么多内容,我们只取其中我们需要的,这里来个最笨的办法: 1.instantclient_11_2目录下的dll全部复制到你项目的bin目录中,大概也就几个文件,当然有些可能是多余的这就不重要了,但是少了肯定不行; 2.根据你的.net版本,比如是2.0那就从odp.net20中复制,文件分别是: odp.net20\bin\OraOps11w.dll odp.net20\odp.net\bin\2.x\Oracle.DataAccess.dll 如果想提示信息中文odp.net20\odp.net\bin\2.x\Resources这个目录也一并复制 这些都复制到你的bin目录中。 3.在项目中引用Oracle.DataAccess.dll这个dll就可以了,代码中如下写法;
//执行sql语句
private void ExecuteSql(String sql) {
string conn_str = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.140)(PORT=1521))(CONNECT_DATA=(SID=mydb_sid)));User Id=username;Password=password;";
OracleConnection conn = new OracleConnection(conn_str);
conn.Open();
OracleCommand cmd = new OracleCommand(sql, conn);
cmd.ExecuteNonQuery();
conn.Close();
}
注意数据库连接改成自己对应的值。