`
javasee
  • 浏览: 920649 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

c# 执行存储过程的通用类

 
阅读更多
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Collections;
using System.Data;
// 摘要:数据访问助手。
// 作者:ZhiQiao
// 日期:2008/07/02

namespace ZhiQiao.DataAccessHelper
{
// 存储过程调用助手。
public class StoreProcedure
{
// 存储过程名称。
private string _name;
// 数据库连接字符串。
private string _conStr;
// 构造函数
// sprocName: 存储过程名称;
// conStr: 数据库连接字符串。
public StoreProcedure(string sprocName, string conStr) {
_conStr
= conStr;
_name
= sprocName;
}
// 执行存储过程,不返回值。
// paraValues: 参数值列表。
// return: void
public void ExecuteNoQuery(params object[] paraValues) {
using (SqlConnection con = new SqlConnection(_conStr)) {
SqlCommand comm
= new SqlCommand(_name, con);
comm.CommandType
= CommandType.StoredProcedure;
AddInParaValues(comm, paraValues);
con.Open();
comm.ExecuteNonQuery();
con.Close();
}
}
// 执行存储过程返回一个表。
// paraValues: 参数值列表。
// return: DataTable
public DataTable ExecuteDataTable(params object[] paraValues) {
SqlCommand comm
= new SqlCommand(_name, new SqlConnection(_conStr));
comm.CommandType
= CommandType.StoredProcedure;
AddInParaValues(comm, paraValues);
SqlDataAdapter sda
= new SqlDataAdapter(comm);
DataTable dt
= new DataTable();
sda.Fill(dt);
return dt;
}
// 执行存储过程,返回SqlDataReader对象,
// 在SqlDataReader对象关闭的同时,数据库连接自动关闭。
// paraValues: 要传递给给存储过程的参数值类表。
// return: SqlDataReader
public SqlDataReader ExecuteDataReader(params object[] paraValues) {
SqlConnection con
= new SqlConnection(_conStr);
SqlCommand comm
= new SqlCommand(_name, con);
comm.CommandType
= CommandType.StoredProcedure;
AddInParaValues(comm, paraValues);
con.Open();
return comm.ExecuteReader(CommandBehavior.CloseConnection);
}
// 获取存储过程的参数列表。
private ArrayList GetParas() {
SqlCommand comm
= new SqlCommand("dbo.sp_sproc_columns_90",
new SqlConnection(_conStr));
comm.CommandType
= CommandType.StoredProcedure;
comm.Parameters.AddWithValue(
"@procedure_name", (object)_name);
SqlDataAdapter sda
= new SqlDataAdapter(comm);
DataTable dt
= new DataTable();
sda.Fill(dt);
ArrayList al
= new ArrayList();
for (int i = 0; i < dt.Rows.Count; i++) {
al.Add(dt.Rows[i][
3].ToString());
}
return al;
}
// 为 SqlCommand 添加参数及赋值。
private void AddInParaValues(SqlCommand comm, params object[] paraValues) {
comm.Parameters.Add(
new SqlParameter("@RETURN_VALUE", SqlDbType.Int));
comm.Parameters[
"@RETURN_VALUE"].Direction =
ParameterDirection.ReturnValue;
if (paraValues != null) {
ArrayList al
= GetParas();
for (int i = 0; i < paraValues.Length; i++) {
comm.Parameters.AddWithValue(al[i
+ 1].ToString(),
paraValues[i]);
}
}
}
}
}

分享到:
评论

相关推荐

    C#调用存储过程的通用类

    C#调用存储过程的通用类,文档中包含调用存储过程的源代码

    C# winform调用SQL存储过程-菜鸟入门 详细注释

    内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...

    C#SQL数据库操作通用类

    C#SQL数据库操作通用类,运行SQL语句。 运行SQL语句返回DataReader,SqlDataReader对象;生成Command对象;返回adapter对象;运行SQL语句,返回DataSet对象;返回SQL语句执行结果的第一行第一列;返回SQL语句第一列,...

    C#公共类通用类非常齐全

    独立存储操作辅助类(IsolatedStorageHelper.cs) 序列号操作辅助类(Serializer.cs) 获取一个对象,它提供用于访问经常引用的目录的属性。(SpecialDirectories.cs) 简单的Word操作对象(WordCombineUtil.cs) 这个类...

    C#操作MS SQL Server 数据库的通用类

    下面给出了一个C#操作MS SQL Server 数据库的通用类,通过该类可以对数据库进行任何操作,包括执行SQL语句、执行存储过程。以下是其详细实现过程,希望大家共同修改优化之。稍后将介绍如何使用它实现N层的程序设计。...

    C#公共通用类

    独立存储操作辅助类(IsolatedStorageHelper.cs) 序列号操作辅助类(Serializer.cs) 获取一个对象,它提供用于访问经常引用的目录的属性。(SpecialDirectories.cs) 简单的Word操作对象(WordCombineUtil.cs) 这个类...

    Repository:C#中存储库模式的通用实现

    存储库是C#中存储库模式的通用实现。 它提供了一个存储库基类Repository&lt;T&gt; ,它公开了用于存储/检索数据的函数,还提供了一个对象上下文基类ObjectContext&lt;T&gt; ,一旦检索到数据,就可以对其进行操作。 它还公开了...

    Asp.net C#通用分页类

    但是我用过的几个控件,本身都要执行SQL,对存储过程支持不好,为了方便,特别写了个通用分页类,利用PagedDataSource来实现DataGrid,DataList,Repeater的分页。 完成上一页,下一页,最后一页,最前一页,总页数...

    C#(VB.net)数据库访问操作类库

    网上有个通用数据访问类库 不支持存储过程和参数 我只能重新做了这个 数据库操作类: 支持 SQLServer mysql sqlite Sybase Oracle等DB 数据库操作类 包括执行SQL或者存储过程,返回DataSet、DataTable等功能 完全支持...

    C# 语言规范 版本5.0中文.pdf

    所有 C# 类型(包括诸如 int 和 double 之类的基元类 型)都继承于单个根类型: object。因此,所有类型都共享一组通用操作,并且任何类型的值都能够 以一致的方式进行存储、传递和操作。此外, C# 同时支持用户定义...

    数据库的通用访问代码 asp.net(C#语言)

    /// &lt;param name="commandType"&gt;SqlCommand命令类型 (存储过程, T-SQL语句, 等等。) /// 存储过程的名字或者 T-SQL 语句 /// 以数组形式提供SqlCommand命令中用到的参数列表 /// 返回一个数值表示此SqlCommand...

    C#基类库(苏飞版)

    使用C#实现对Sql数据库的操作,执行存储过程,Sql语句,返回影响行数,返回DateTable,DataSet,DataReader,以及表集等方法。实现多个数据库的切换功能。功能强大,希望大家喜欢 2.一个操作Sql2005数据库的类(备份...

    C# 4.0语言规范

    所有 C# 类型(包括诸如 int 和 double 之类的基元类型)都继承于一个唯一的根类型:object。因此,所有类型都共享一组通用操作,并且任何类型的值都能够以一致的方式进行存储、传递和操作。此外,C# 同时支持用户...

    c# 公用操作类库源码

    独立存储操作辅助类(IsolatedStorageHelper.cs) 序列号操作辅助类(Serializer.cs) 获取一个对象,它提供用于访问经常引用的目录的属性。(SpecialDirectories.cs) 简单的Word操作对象(WordCombineUtil.cs) 这...

    C#微软培训资料

    17.2 文件存储管理 .217 17.3 读 写 文 件 .222 17.4 异步文件操作 .227 17.5 小 结 .234 第十八章 高 级 话 题 .235 18.1 注册表编程 .235 18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 ...

    .NET代码生成器 C# 版(可自定义模板函,模板类,及视图实体)

     可定义函数模板和类模板,使代码生成更加通用化。 说明:这需要事先安装.net framework 3.5 。这个完全出自本人之手。有什么建议望指正。 邮箱:hp_co@qq.com 。 类似于李天平的,但那个太死了,这个可以...

    C#语言规范4

    所有 C# 类型(包括诸如 int 和 double 之类的基元类型)都继承于一个唯一的根类型:object。因此,所有类型都共享一组通用操作,并且任何类型的值都能够以一致的方式进行存储、传递和操作。此外,C# 同时支持用户...

    c#学习笔记.txt

    在实现类或结构中定位接口成员的实现的过程称为接口映射。 6,object object 类类型是所有其他类型的最终基类。C# 中的每种类型都是直接或间接从 object 类类型派生的。可以把任何类型的数值给object类型. 7,string...

    C#公共类源代码 带帮助文档

    独立存储操作辅助类(IsolatedStorageHelper.cs) 序列号操作辅助类(Serializer.cs) 获取一个对象,它提供用于访问经常引用的目录的属性。(SpecialDirectories.cs) 简单的Word操作对象(WordCombineUtil.cs) 这...

    .NET代码生成器 C# 版 (可自定义模板函数和模板类,及视图实体)

     可定义函数模板和类模板,使代码生成更加通用化。 说明:这需要事先安装.net framework 3.5 。这个完全出自本人之手。有什么建议望指正。 邮箱:hp_co@qq.com 。 类似于李天平的,但那个太死了,这个可以...

Global site tag (gtag.js) - Google Analytics