C#连接Oracle数据库教程:新旧两种方法解析

5星 · 超过95%的资源 需积分: 10 3 下载量 69 浏览量 更新于2024-10-13 收藏 34KB DOC 举报
"C#中与Oracle数据库的连接通常涉及数据库操作、事务管理和命令参数的创建。本文将详细探讨这些方面,以帮助理解如何在C#应用程序中与Oracle数据库进行交互。" C#语言中,与Oracle数据库的连接是通过ADO.NET库实现的,主要使用OracleClient组件。以下是一些关键步骤和概念: 1. 数据库连接: - 古老方法:使用`OracleConnection`类直接建立连接。你需要提供包含数据库服务器、用户ID和密码的连接字符串,如: ```csharp string mysqlstr = "Data Source=xal;User ID=xal;Password=xal;"; OracleConnection mycnn = new OracleConnection(mysqlstr); mycnn.Open(); ``` - 新式方法:使用`OracleConnectionStringBuilder`类构建连接字符串,这样更灵活且易于管理: ```csharp OracleConnectionStringBuilder ocnnStrB = new OracleConnectionStringBuilder(); ocnnStrB.DataSource = "xal"; ocnnStrB.UserID = "xal"; ocnnStrB.Password = "xal"; OracleConnection myCnn = new OracleConnection(ocnnStrB.ConnectionString); myCnn.Open(); ``` 2. 事务操作:在C#中,你可以使用`OracleCommand`类和`OracleTransaction`类处理数据库事务。以下是一个示例: ```csharp myConn.Open(); OracleCommand insertComm = new OracleCommand(); insertComm.Connection = myConn; insertComm.Transaction = myConn.BeginTransaction(); try { // 执行事务操作语句 // ... insertComm.Transaction.Commit(); } catch (Exception ex) { insertComm.Transaction.Rollback(); MessageBox.Show(ex.Message); } finally { myConn.Close(); } ``` 这里,`BeginTransaction()`用于启动一个事务,`Commit()`提交事务,而`Rollback()`则在出现异常时回滚事务。 3. 创建命令参数:`OracleParameter`类用于定义SQL命令中的参数。下面是如何创建一个参数的示例: ```csharp private OracleParameter CreateOraParam(string paramName, object paramValue) { OracleParameter result = new OracleParameter(); result.ParameterName = paramName; if (paramValue != null) { result.Value = paramValue; } else { // 其他处理或默认值设置 } return result; } ``` 在执行带有参数的SQL命令时,可以调用此方法将参数传递给`OracleCommand`对象。 4. 执行SQL命令:使用`OracleCommand`类执行查询或DML操作,例如`ExecuteNonQuery()`用于更新、插入或删除,`ExecuteReader()`用于获取数据。 ```csharp insertComm.CommandText = "INSERT INTO table_name (column1, column2) VALUES (:param1, :param2)"; insertComm.Parameters.Add(CreateOraParam(":param1", value1)); insertComm.Parameters.Add(CreateOraParam(":param2", value2)); insertComm.ExecuteNonQuery(); ``` 5. 数据读取:对于查询操作,`OracleDataReader`用于逐行读取结果集,或者使用`OracleDataAdapter`和`DataSet`进行填充。 ```csharp OracleDataReader reader = command.ExecuteReader(); while (reader.Read()) { // 处理每一行数据 } reader.Close(); ``` 在实际开发中,还需要注意错误处理、连接池的使用、安全编码以及遵循最佳实践,以确保代码的健壮性和安全性。同时,Oracle还提供了诸如Oracle Managed Data Access (ODP.NET Managed Driver)等现代连接选项,以提供更好的性能和兼容性。