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语句和存储过程。希望对大家有所帮助。