• 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]);
    }
    }
    }
    }
    }
    

      

  • 相关阅读:
    vi编辑器命令大全
    Ubuntu环境搭建svn服务器
    Visual Studio中“后期生成事件命令行” 中使用XCopy命令
    解决 Visual Studio For Mac 还原包失败问题
    [Win10应用开发] 如何使用Windows通知
    [Win10应用开发] 使用 Windows 推送服务
    如何使用 PsExec 执行远程命令
    如何在调试Window App时,触发 Suspending ,Resuming 等事件
    如何 “解决” WPF中空域问题(Airspace issuse)
    浅谈可扩展性框架:MEF
  • 原文地址:https://www.cnblogs.com/laojiefang/p/2330934.html
Copyright © 2020-2023  润新知