C#编程调用Oracle数据库及存储过程教程

3星 · 超过75%的资源 需积分: 50 51 下载量 199 浏览量 更新于2024-09-17 3 收藏 19KB TXT 举报
"这篇教程详细介绍了如何在C#中调用Oracle数据库,特别是涉及到了调用存储过程并处理输出参数的方法。适合初学者学习C#与Oracle数据库的交互技术。" 在C#开发中,与Oracle数据库进行交互是常见的需求。本教程主要讲解了两种方法:一种是执行简单的SQL查询,另一种是调用Oracle存储过程,并处理存储过程的输出参数。以下将详细介绍这两个部分。 首先,执行SQL查询。在C#中,我们可以使用`OracleConnection`类来建立与Oracle数据库的连接,`OracleCommand`类来执行SQL命令。例如,下面的代码展示了如何打开一个连接,创建一个`OracleCommand`对象,设置其`CommandText`属性为SQL查询语句("select * from MyTable"),然后使用`ExecuteReader`方法获取数据,并通过`OracleDataReader`遍历查询结果: ```csharp using System.Data.OracleClient; using System.Data; // 在按钮点击事件中 private void Button1_Click(object sender, System.EventArgs e) { string ConnectionString = "DataSource=sky;user=system;password=manager;"; OracleConnection conn = new OracleConnection(ConnectionString); try { conn.Open(); OracleCommand cmd = conn.CreateCommand(); cmd.CommandText = "select * from MyTable"; OracleDataReader odr = cmd.ExecuteReader(); while (odr.Read()) { Response.Write(odr.GetOracleString(1).ToString()); // 获取第一列数据并输出 } odr.Close(); } catch (Exception ee) { Response.Write(ee.Message); // 输出错误信息 } finally { conn.Close(); // 关闭连接 } } ``` 接下来,我们来看如何调用Oracle存储过程。存储过程通常包含输入、输出和 inout 参数。在C#中,可以通过`OracleCommand`的`Parameters`集合来添加这些参数。例如,假设我们有一个存储过程`usp_GetEmployeeDetails`,它接受员工ID作为输入参数,并返回一个包含员工详细信息的数据集: ```csharp public void CallOracleProcedure() { string ConnectionString = "DataSource=mine;user=sys;password=sys;"; OracleConnection conn = new OracleConnection(ConnectionString); OracleCommand cmd = new OracleCommand("usp_GetEmployeeDetails", conn); cmd.CommandType = CommandType.StoredProcedure; // 添加输入参数 cmd.Parameters.Add(new OracleParameter("emp_id", OracleDbType.Int32)).Value = 123; // 添加输出参数 cmd.Parameters.Add(new OracleParameter("emp_details", OracleDbType.RefCursor, ParameterDirection.Output)); conn.Open(); OracleDataAdapter adapter = new OracleDataAdapter(cmd); DataSet ds = new DataSet(); adapter.Fill(ds); // 现在ds包含了存储过程返回的数据 // 可以进一步处理ds中的数据 cmd.Parameters["emp_details"].Dispose(); // 清理输出参数 conn.Close(); } ``` 在这个例子中,`usp_GetEmployeeDetails`存储过程被设置为`CommandType.StoredProcedure`,然后添加了输入参数`emp_id`和输出参数`emp_details`。输出参数使用`OracleDbType.RefCursor`类型,因为存储过程可能返回一个游标(数据集)。最后,使用`OracleDataAdapter`填充`DataSet`,以便在C#代码中处理返回的数据。 C#调用Oracle数据库可以通过`OracleConnection`、`OracleCommand`和`OracleDataReader`等类来实现,调用存储过程时需要处理参数,特别是输出参数,这通常涉及到`OracleParameter`对象的使用。在实际开发中,确保正确处理异常和关闭数据库连接是非常重要的,以保持应用程序的健壮性和资源的有效利用。