C#编程调用Oracle数据库及存储过程教程
3星 · 超过75%的资源 需积分: 50 108 浏览量
更新于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`对象的使用。在实际开发中,确保正确处理异常和关闭数据库连接是非常重要的,以保持应用程序的健壮性和资源的有效利用。
2020-12-26 上传
2020-12-22 上传
2009-08-11 上传
2020-06-30 上传
2008-11-28 上传
点击了解资源详情
lifan185
- 粉丝: 1
- 资源: 4
最新资源
- ayotidur
- Exsty-crx插件
- Language-zone
- SCATTERBAR3:创建一个 3-D 条形图,其中条形放置在用户指定的 XY 位置。-matlab开发
- TensorFlow2实战-系列教程14:Resnet实战
- [新闻文章]小虫新闻管理系统V1.0_xcnewsv1.0.rar
- AzureDiagnosticsPipeline:此存储库具有构建Azure诊断DevOps管道的源,以将诊断设置应用于Azure资源(动态)
- 蛇:基于控制台的蛇游戏
- TurboCStudy,c语言编译的源码,c语言项目
- Biorhythm:你的一周过得怎么样?-matlab开发
- koa-template-project:Koa模板项目
- 简洁棕色线条响应式html5模板5598.zip
- Coin Master Free Spins Loader-crx插件
- 苹果手机
- click-and-meet-calendar-generator:生成可打印的日历,以根据德国的COVID-19规则管理“点击并开会”约会
- -123r