现在的位置: 首页 > 综合 > 正文

.net 连接oracle数据库

2014年02月15日 ⁄ 综合 ⁄ 共 1473字 ⁄ 字号 评论关闭

1、安装oracle for .net 【oracle data access components ODAC】客户端(从网上找下载地址吧200多M,要分清楚32位64位操作系统),安装成功后odac客户端就会自动添加到环境变量path中,.net也主要根据这个环境变量查找oracle数据库的.ora文件。

2、找到安装目录,D:\app\Administrator\product\11.1.0\client_1\Network\Admin文件夹,配置数据库.ora连接文件,sqlnet.ora和tnsnames.ora,如果没有这两个文件需要自己添加,可以从Sample文件夹拷贝出来,改成自己的数据库地址。

sqlnet.ora文件内容

SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

tnsnames.ora文件内容

orclDb=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.5)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

 

3、配置web.config 连接字符串

<add key="oracleStr" value="Data Source=orclDb;User ID=orcl;Password=orcl123"/>   

其中Data Source=orclDb要和tnsnames.ora文件配置的实例名相同

User ID连接oracle数据库的用户名,Password连接oracle数据库的密码

 

4、配置好数据库.ora文件,找到安装目录D:\app\Administrator\product\11.1.0\client_1\odp.net\bin\2.x

主要找odp.net文件夹下的bin目录中的Oracle.DataAccess.dll文件

然后在.net项目中添加Oracle.DataAccess.dll引用

 

5、在代码中添加

using Oracle.DataAccess.Client;

添加完引用就可以直接使用OracleConnection  OracleCommand   OracleDataAdapter和sql server的用法一样。

public static DataSet getDataSet(string sql)
        {
            DataSet ds = null;
            OracleConnection con=null;
            OracleCommand cmd=null;
            try
            {
                con = new OracleConnection(SysConnStr);//SysConnStr连接字符串

                con.Open();
                cmd = new OracleCommand();
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = sql;
                cmd.Connection = con;
                using (OracleDataAdapter ad = new OracleDataAdapter())
                {
                    ad.SelectCommand = cmd;
                    ad.Fill(ds);
                }
               
            }
            catch
            {

            }
            finally
            {
                if (cmd != null)
                {
                    cmd.Dispose();
                }
                if (con.State == ConnectionState.Open)
                {
                    con.Close();
                }
                
            }
            return ds;
        }

 

抱歉!评论已关闭.