C#是微软推出的一种面向对象的编程语言,具有跨平台、开放源代码等优点,而Oracle是一种功能强大的数据库管理系统,被广泛应用于信息化建设项目中。
C#与Oracle的结合使用,可以实现数据库的连接、数据的读写、事务控制等功能。在实际的开发过程中,我们可以使用Oracle提供的ODP.NET组件,或者使用第三方ORM框架来进行操作。
以连接数据库为例,以下代码演示了使用ODP.NET组件进行连接Oracle数据库:
using System;
using Oracle.DataAccess.Client;
class Program
{
static void Main()
{
string connString = "Data Source=MyOracleDB;User ID=myUser;Password=myPassword;";
OracleConnection conn = new OracleConnection(connString);
try
{
conn.Open();
Console.WriteLine("连接成功");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
conn.Close();
}
}
}
以上代码中,首先引入Oracle.DataAccess.Client命名空间,然后定义了一个连接字符串,通过OracleConnection类建立连接,并在try-catch-finally块中进行连接、断开等操作。
除了连接数据库,我们还可以使用C#与Oracle实现数据的读写。例如,以下代码演示了通过C#程序向Oracle数据库中插入一条数据:using System;
using Oracle.DataAccess.Client;
class Program
{
static void Main()
{
string connString = "Data Source=MyOracleDB;User ID=myUser;Password=myPassword;";
OracleConnection conn = new OracleConnection(connString);
try
{
conn.Open();
string sql = "INSERT INTO StudentInfo (Name, Age, Gender) VALUES (:name, :age, :gender)";
OracleCommand cmd = new OracleCommand(sql, conn);
cmd.Parameters.Add(":name", "张三");
cmd.Parameters.Add(":age", 20);
cmd.Parameters.Add(":gender", "男");
int result = cmd.ExecuteNonQuery();
Console.WriteLine("插入成功,受影响的行数为:" + result);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
conn.Close();
}
}
}
以上代码中,我们使用OracleCommand类来执行SQL语句,并通过Parameters属性设置参数,最后使用ExecuteNonQuery方法来执行插入操作。
在事务控制方面,C#与Oracle也提供了一些相应的方法。例如,以下代码演示了使用C#代码控制Oracle数据库中的事务:using System;
using Oracle.DataAccess.Client;
class Program
{
static void Main()
{
string connString = "Data Source=MyOracleDB;User ID=myUser;Password=myPassword;";
OracleConnection conn = new OracleConnection(connString);
try
{
conn.Open();
OracleTransaction trans = conn.BeginTransaction();
try
{
string sql1 = "UPDATE StudentInfo SET Age=21 WHERE Name='张三'";
OracleCommand cmd1 = new OracleCommand(sql1, conn);
cmd1.Transaction = trans;
cmd1.ExecuteNonQuery();
string sql2 = "UPDATE StudentInfo SET Age=18 WHERE Name='李四'";
OracleCommand cmd2 = new OracleCommand(sql2, conn);
cmd2.Transaction = trans;
cmd2.ExecuteNonQuery();
Console.WriteLine("事务提交");
trans.Commit();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine("事务回滚");
trans.Rollback();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
conn.Close();
}
}
}
以上代码中,我们使用OracleTransaction类来控制事务,通过BeginTransaction方法开启一个事务,然后在try-catch-finally块中执行相关操作,最后通过Commit或Rollback方法提交或回滚事务。
总之,C#与Oracle的结合使用,可以帮助我们实现各种数据库操作,提高开发效率,降低系统的开发和维护成本。