C#调用存储过程的通用类
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]);
}
}
}
}
}
转载于:https://www.cnblogs.com/JoeDZ/archive/2008/07/07/1237476.html
C#调用存储过程的通用类相关推荐
- 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法
一. 背景 上一个章节,介绍了EF调用两类SQL语句,主要是借助 ExecuteSqlCommand 和 SqlQuery 两个方法来完成,在本章节主要是复习几类存储过程的写法和对应的EF调用这几类 ...
- oracle数据块调用存储过程,VC调用存储过程的通用方法(ORACLE篇)
先对上一篇调用SQLServer的存储过程作一点补充,就是如果存储过程里有Insert,update,delete等操作,最后返回结果集,按示例代码有可能得不到数据,因为返回的数据有可能不在第一个结果 ...
- 通过hibernate去调用存储过程
为了在 Hibernate 中使用存储过程,你必须遵循一些规则.不遵循这些规则的存储过程将不可用.如果你仍然想使用他们,你必须通过 session.connection() 来执行他们.这些规则针对于 ...
- hibernate4调用mysql存储过程_hibernate调用存储过程
一. 建表与初始化数据 在mysql的test数据库中建立一张新表:tbl_user,建表语句如下: DROP TABLE IF EXISTS `user`; CREATE TABLE `tbl_us ...
- 通用权限管理系统组件 给信息管理系统加一个初始化的功能,调用存储过程
系统初始化的运行效果如下: 参数表是为了防止反复被初始化的,防止关键数据丢失. 其实很多人都提过希望有系统初始化的功能,最近稍微空一些,就给系统增加了一个初始化的功能,给大家参考一下. 首先写了一个存 ...
- 通用权限管理系统组件 (GPM - General Permissions Manager) 给信息管理系统加一个初始化的功能,调用存储过程...
系统初始化的运行效果如下: 参数表是为了防止反复被初始化的,防止关键数据丢失. 其实很多人都提过希望有系统初始化的功能,最近稍微空一些,就给系统增加了一个初始化的功能,给大家参考一下. 首先写了一个存 ...
- DM8 jdbc调用存储过程传参list<实体类>
DM8 jdbc调用存储过程传参list<实体类> 一.前提 jdbc的连接串参数prepareOptimize,表示是否对预编译SQL做优化,取值true/false,默认false不开 ...
- C#调用存储过程的类
using System; using System.IO; using System.Data; using System.Data.SqlClient; using System.Configur ...
- 使用 CallableStatement 接口调用存储过程
CallableStatement 接口的引入 CallableStatement 主要是调用数据库中的存储过程,CallableStatement 也是 Statement 接口的子接口.在使用 C ...
最新文章
- 集成Lucene和HBase(转)
- .NET Core实战项目之CMS 第十三章 开发篇-在MVC项目结构介绍及应用第三方UI
- ReviewForJob——快速排序(基于插入排序)+快速选择(快速排序变体)
- ASP.NET 5 入门 (3) – Logging
- 使用数组操作解码YOLO Core ML对象检测(三)
- windows操作系统_windows下用深度系统安装器安装深度操作系统实现双系统分别运行...
- JDK及Eclipse下载安装教程
- 汇编语言INC DEC JGE JG JLE JL JNE JE 都是什么意思
- linux 透明图片,FreeImage 生成带透明通道的GIF
- A.B.C类地址的私有地址、局域网地址、保留地址
- 运用Excel实现描述性统计分析
- simulink的pid参数自整定
- 过渡矩阵、线性变换矩阵在对应基下坐标的求法
- cad2010背景怎么调成黑色_3D错觉立体画到底是怎么画出来的?
- Spring学习笔记-C7-SpringMVC高级技术
- [Azure - VM] 解决办法:无法通过SSH连接VM,解决错误:This service allows sftp connections only.
- tcp 与udp 的区别
- 统计学中基础概念说明
- 解决:Win11蓝牙鼠标经常断连问题(亲测有效)
- cell-blog 功能介绍与安装
热门文章
- mysql查询表字段是否存在_Mysql判断表字段或索引是否存在
- oracle opaque_transform,oracle databse link
- 【编译原理】文法分类
- mods文件夹怎么创建_TCL电视怎么安装蜜蜂视频通用教程
- 『设计模式』80年代的人们就已经领悟了设计模式-- 发布者/订阅者模式 (包括发布者/订阅者模式和观察者模式的区别)
- 51NOD 2072 装箱问题 背包问题 01 背包 DP 动态规划
- torque安装笔记
- 2种IO并发开发中的设计模式:Reactor and Proactor
- C++笔记——.和::和:和-的区别
- 【语义分割】OCRNet:Object-Context Representations for Semantic Segmentation