NET访问Oracle是一种优秀的方案,可以满足很多企业级应用程序的需求。
在.NET中,访问Oracle数据库的首要条件就是安装Oracle客户端软件。在安装完Oracle客户端后,需要在.NET程序中添加对Oracle.DataAccess的引用才能开始访问Oracle数据库。
//引用Oracle.DataAccess命名空间
using Oracle.DataAccess.Client;
//连接数据库
string connStr = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User ID=hr;Password=hr;";
using (OracleConnection conn = new OracleConnection(connStr))
{
conn.Open();
//查询
OracleCommand cmd = new OracleCommand("SELECT * FROM employees WHERE employee_id = 100", conn);
OracleDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader["employee_id"] + " " + reader["first_name"] + " " + reader["last_name"]);
}
}
在连接Oracle数据库时,需要在Data Source参数中指定Oracle数据库的地址,用户名和密码。此外,还可以在连接字符串中加入更多的Oracle连接选项。
为了提高程序的性能和安全性,我们需要在代码中使用参数化SQL语句来替代传统的字符串拼接方式。这样不仅能有效防止SQL注入攻击,还能提升程序的执行效率。
//参数化SQL语句
string sql = "SELECT * FROM employees WHERE employee_id = :id";
using (OracleConnection conn = new OracleConnection(connStr))
{
conn.Open();
OracleCommand cmd = new OracleCommand(sql, conn);
//添加参数
OracleParameter param = new OracleParameter(":id", OracleDbType.Int32, 4);
param.Value = 100;
cmd.Parameters.Add(param);
OracleDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader["employee_id"] + " " + reader["first_name"] + " " + reader["last_name"]);
}
}
Oracle数据库支持多种数据类型,包括数字、字符串、日期、LOB等。在.NET程序中,需要使用相应的Oracle数据类型来与Oracle数据库进行交互。
//插入CLOB数据
string sql = "INSERT INTO employees(employee_id, resume) VALUES(:id, :resume)";
using (OracleConnection conn = new OracleConnection(connStr))
{
conn.Open();
OracleCommand cmd = new OracleCommand(sql, conn);
//添加参数
OracleParameter paramId = new OracleParameter(":id", OracleDbType.Int32, 4);
paramId.Value = 100;
cmd.Parameters.Add(paramId);
OracleParameter paramResume = new OracleParameter(":resume", OracleDbType.Clob);
paramResume.Value = "This is a test";
cmd.Parameters.Add(paramResume);
cmd.ExecuteNonQuery();
}
在.NET中,可以使用OracleDataAdapter和DataSet来实现数据的批量读取和更新。通过填充DataSet对象,我们可以在数据缓存中进行数据操作,然后再通过DataAdapter对象的Update方法将更改应用到Oracle数据库中。
//批量更新数据
string sql = "SELECT * FROM employees WHERE department_id = 60";
using (OracleConnection conn = new OracleConnection(connStr))
{
conn.Open();
OracleDataAdapter adapter = new OracleDataAdapter(sql, conn);
OracleCommandBuilder cmdBuilder = new OracleCommandBuilder(adapter);
DataSet ds = new DataSet();
adapter.Fill(ds, "employees");
foreach (DataRow dr in ds.Tables["employees"].Rows)
{
dr["salary"] = ((decimal)dr["salary"]) * 1.1;
}
//更新数据
adapter.Update(ds, "employees");
}
.NET访问Oracle数据库可以实现高效、安全和灵活的数据交互。在进行数据访问时,需要注意使用参数化SQL语句来防止SQL注入攻击,同时应选择适合的Oracle数据类型进行数据转换。在数据操作时,可使用OracleDataAdapter和DataSet来实现数据的批量读取和更新,提高程序的性能。