淘先锋技术网

首页 1 2 3 4 5 6 7

ODP.NET是Oracle Database 10g和11g的驱动程序,将数据访问拓展到了.NET平台。ODP.NET提供了许多新功能和性能优化,使得开发者能够更加高效地开发.NET与Oracle数据库的应用。本文将重点介绍如何使用ODP.NET连接Oracle数据库。

首先,我们需要安装ODP.NET驱动程序。可以在Oracle官方网站上下载。安装完成后,我们需要引用ODP.NET程序集才能在.NET应用中使用。可以手动添加程序集或者使用NuGet包安装。

using Oracle.DataAccess.Client;

接下来,我们需要使用连接字符串连接到Oracle数据库。连接字符串一般包含以下内容:

  • 服务器名称或IP地址
  • 端口号
  • 数据库名称
  • 用户名和密码
  • 其他可选参数

例如:

string constr = "Data Source=192.168.1.100:1521/orcl;User Id=scott;Password=tiger;"

上述连接字符串使用了Data Source参数指定了服务器名称和端口号,使用了User Id和Password参数指定了用户名和密码。如果Oracle数据库和.NET应用在同一台机器上,可以将Data Source指定为“localhost”,如果需要使用Oracle客户端软件连接数据库,也可以将Data Source指定为Oracle客户端安装路径下的tnsnames.ora文件中定义的别名。

下面介绍如何使用连接字符串连接到Oracle数据库,执行SQL语句并返回结果集。使用ODP.NET需要引用Oracle.DataAccess.Client命名空间。

using Oracle.DataAccess.Client;
string constr = "Data Source=192.168.1.100:1521/orcl;User Id=scott;Password=tiger;";
using (OracleConnection con = new OracleConnection(constr))
{
con.Open();
string sql = "SELECT * FROM emp WHERE deptno=:deptno";
OracleCommand cmd = new OracleCommand(sql, con);
cmd.Parameters.Add(":deptno", OracleDbType.Int32).Value = 10;
using (OracleDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader["ename"]);
}
}
}

上述代码首先创建了一个OracleConnection对象,并传入连接字符串,使用using关键字包裹,确保资源在使用后被释放。

然后创建了一个SQL语句SELECT * FROM emp WHERE deptno=:deptno,并将参数deptno的值指定为10。使用OracleCommand对象执行SQL语句,并使用OracleDataReader对象读取结果集。在while循环中遍历结果集,并输出ename字段的值。

最后,我们需要关闭连接和释放资源。

con.Close();
cmd.Dispose();
con.Dispose();

我们还可以使用ODP.NET执行Oracle存储过程:

using Oracle.DataAccess.Client;
string constr = "Data Source=192.168.1.100:1521/orcl;User Id=scott;Password=tiger;";
using (OracleConnection con = new OracleConnection(constr))
{
con.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = con;
cmd.CommandText = "PKG_EMP.ADD_EMP";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("p_empno", OracleDbType.Int32).Value = 8888;
cmd.Parameters.Add("p_ename", OracleDbType.Varchar2, 50).Value = "TEST";
cmd.Parameters.Add("p_job", OracleDbType.Varchar2, 50).Value = "MANAGER";
cmd.Parameters.Add("p_mgr", OracleDbType.Int32).Value = 7839;
cmd.Parameters.Add("p_hiredate", OracleDbType.Date).Value = DateTime.Today;
cmd.Parameters.Add("p_sal", OracleDbType.Decimal).Value = 5000;
cmd.Parameters.Add("p_comm", OracleDbType.Decimal).Value = 1000;
cmd.Parameters.Add("p_deptno", OracleDbType.Int32).Value = 10;
cmd.ExecuteNonQuery();
}

以上代码执行了一个名为PKG_EMP.ADD_EMP的存储过程,传入了8个参数,并使用ExecuteNonQuery方法执行。

本文介绍了如何使用ODP.NET连接Oracle数据库并执行SQL语句和存储过程。希望对大家有所帮助。