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

      

  • 相关阅读:
    OAuth认证介绍及腾讯微博OAuth认证示例
    Android PopupWindow介绍及实现菜单效果
    Android 输入法键盘和activity页面遮挡问题解决
    eclipse中android项目的编译过程分析
    Android Tween动画之RotateAnimation实现图片不停旋转
    eclipse 文件同步插件
    关于移动Web应用程序开发 HTML5、高性能JavaScript篇、Css的几篇较好博客
    Android 记录和恢复ListView滚动的位置的三种方法
    Apache的功能模块
    如何防止自己网站的图片被其他网站所盗用,从而导致自己网站流量的损失【apache篇】
  • 原文地址:https://www.cnblogs.com/laojiefang/p/2330934.html
Copyright © 2020-2023  润新知