当前位置:首页 > 芯闻号 > 充电吧
[导读]using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Collections;
using System.Data.SqlClient;
 
////// 数据库的通用访问代码
/// 此类为抽象类,不允许实例化,在应用时直接调用即可
///public abstract class SqlHelper
{
    //获取数据库连接字符串,其属于静态变量且只读,项目中所有文档可以直接使用,但不能修改
    public static readonly string ConnectionStringLocalTransaction = ConfigurationManager.ConnectionStrings["pubsConnectionString"].ConnectionString;
 
    // 哈希表用来存储缓存的参数信息,哈希表可以存储任意类型的参数。
    private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
 
    //////执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。
    /// 使用参数数组形式提供参数列表 
    ///////// 使用示例:
    ///  int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
    //////一个有效的数据库连接字符串///SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)///存储过程的名字或者 T-SQL 语句///以数组形式提供SqlCommand命令中用到的参数列表///返回一个数值表示此SqlCommand命令执行后影响的行数public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
    {
 
        SqlCommand cmd = new SqlCommand();
 
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            //通过PrePareCommand方法将参数逐个加入到SqlCommand的参数集合中
            PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
            int val = cmd.ExecuteNonQuery();
 
            //清空SqlCommand中的参数列表
            cmd.Parameters.Clear();
            return val;
        }
    }
     
    //////执行一条不返回结果的SqlCommand,通过一个已经存在的数据库连接 
    /// 使用参数数组提供参数
    ///////// 使用示例:  
    ///  int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
    //////一个现有的数据库连接///SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)///存储过程的名字或者 T-SQL 语句///以数组形式提供SqlCommand命令中用到的参数列表///返回一个数值表示此SqlCommand命令执行后影响的行数public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
    {
 
        SqlCommand cmd = new SqlCommand();
 
        PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
        int val = cmd.ExecuteNonQuery();
        cmd.Parameters.Clear();
        return val;
    }
 
    ////// 执行一条不返回结果的SqlCommand,通过一个已经存在的数据库事物处理 
    /// 使用参数数组提供参数
    ///////// 使用示例: 
    ///  int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
    //////一个存在的 sql 事物处理///SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)///存储过程的名字或者 T-SQL 语句///以数组形式提供SqlCommand命令中用到的参数列表///返回一个数值表示此SqlCommand命令执行后影响的行数public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
    {
        SqlCommand cmd = new SqlCommand();
        PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
        int val = cmd.ExecuteNonQuery();
        cmd.Parameters.Clear();
        return val;
    }
 
    ////// 执行一条返回结果集的SqlCommand命令,通过专用的连接字符串。
    /// 使用参数数组提供参数
    ///////// 使用示例:  
    ///  SqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
    //////一个有效的数据库连接字符串///SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)///存储过程的名字或者 T-SQL 语句///以数组形式提供SqlCommand命令中用到的参数列表///返回一个包含结果的SqlDataReaderpublic static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
    {
        SqlCommand cmd = new SqlCommand();
        SqlConnection conn = new SqlConnection(connectionString);
 
        // 在这里使用try/catch处理是因为如果方法出现异常,则SqlDataReader就不存在,
        //CommandBehavior.CloseConnection的语句就不会执行,触发的异常由catch捕获。
        //关闭数据库连接,并通过throw再次引发捕捉到的异常。
        try
        {
            PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
            SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            cmd.Parameters.Clear();
            return rdr;
        }
        catch
        {
            conn.Close();
            throw;
        }
    }
 
    ////// 执行一条返回第一条记录第一列的SqlCommand命令,通过专用的连接字符串。 
    /// 使用参数数组提供参数
    ///////// 使用示例:  
    ///  Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
    //////一个有效的数据库连接字符串///SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)///存储过程的名字或者 T-SQL 语句///以数组形式提供SqlCommand命令中用到的参数列表///返回一个object类型的数据,可以通过 Convert.To{Type}方法转换类型public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
    {
        SqlCommand cmd = new SqlCommand();
 
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
            object val = cmd.ExecuteScalar();
            cmd.Parameters.Clear();
            return val;
        }
    }
 
    ////// 执行一条返回第一条记录第一列的SqlCommand命令,通过已经存在的数据库连接。
    /// 使用参数数组提供参数
    ///////// 使用示例: 
    ///  Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
    //////一个已经存在的数据库连接///SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)///存储过程的名字或者 T-SQL 语句///以数组形式提供SqlCommand命令中用到的参数列表///返回一个object类型的数据,可以通过 Convert.To{Type}方法转换类型public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
    {
 
        SqlCommand cmd = new SqlCommand();
 
        PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
        object val = cmd.ExecuteScalar();
        cmd.Parameters.Clear();
        return val;
    }
 
    ////// 缓存参数数组
    //////参数缓存的键值///被缓存的参数列表public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters)
    {
        parmCache[cacheKey] = commandParameters;
    }
 
    ////// 获取被缓存的参数
    //////用于查找参数的KEY值///返回缓存的参数数组public static SqlParameter[] GetCachedParameters(string cacheKey)
    {
        SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey];
 
        if (cachedParms == null)
            return null;
 
        //新建一个参数的克隆列表
        SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length];
 
        //通过循环为克隆参数列表赋值
        for (int i = 0, j = cachedParms.Length; i < j; i++)
            //使用clone方法复制参数列表中的参数
            clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();
 
        return clonedParms;
    }
 
    ////// 为执行命令准备参数
    //////SqlCommand 命令///已经存在的数据库连接///数据库事物处理///SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)///Command text,T-SQL语句 例如 Select * from Products///返回带参数的命令private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
    {
 
        //判断数据库连接状态
        if (conn.State != ConnectionState.Open)
            conn.Open();
 
        cmd.Connection = conn;
        cmd.CommandText = cmdText;
 
        //判断是否需要事物处理
        if (trans != null)
            cmd.Transaction = trans;
 
        cmd.CommandType = cmdType;
 
        if (cmdParms != null)
        {
            foreach (SqlParameter parm in cmdParms)
                cmd.Parameters.Add(parm);
        }
    }
}



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

目前主流的面向对象的编程语言C#、C++、Java; 一、C#的特点: C#在带来对应用程序的快速开发能力的同时,并没有牺牲C与C++程序员所关心的各种特性。它忠实地继承了C和C++的优点。如果你对C

关键字: c# 面向对象编程

作者:朱金灿来源:http://blog.csdn.net/clever101         什么是好的开发语言和好的开发框架?这个问题可能一千个人有一千种答案,我的答案是在满足用户效率需要的前提下

关键字: c# QT

关于边缘改进全局阈值处理基本实现是: 1.先计算其边界,利用拉普拉斯或者梯度变换都以。 2.计算变化后边界图像的绝对值3.指定一个阈值(一般以百分比的形式指定,比如我指定90%,如果存在有灰度k,灰度

关键字: c# 函数

DES加密应该是最基础的加密算法。DES一共就有4个参数参与运作:明文、密文、密钥、向量。为了初学者容易理解,可以把4个参数的关系写成:密文=明文+密钥+向量;明文=密文-密钥-向量。为什么要向量这个

关键字: c# des算法

用过C#的人,一般都知道委托和事件。如果没有用过C#,我在这里简单解释一下委托,如果用过了,下面可以skip。委托是一个方法声明,我们知道,在C语言中,可以通过函数指针表示一个地址的CALL方法,委托

关键字: c# c++

我刚用C#一个来月,可能理解得不对,还请大家指教。读懂文章你需要对C语言的指针有所理解。需要注意区别:对C\C++来说,任何类型都可以当成C#的“引用类型”,因为有指针。【在内存上】void foo(

关键字: c#

最近有段时间因为有个项目一直需要Socket数据传输。所以呢没办法就整了一套Socket最简单的版本出来。以便自己日后方便使用。我遇到的程序Socket是通过Tcp Ip的方式进行数据传输的.不多说先

关键字: c# socket

C#中的Invoke  转载▼在用.NET Framework框架的WinForm构建GUI程序界面时,如果要在控件的事件响应函数中改变控件的状态,例如:某个按钮上的文本原先叫“打开”,单击之后按钮上

关键字: .net c#

引言HTTP协议我想任何IT人士都耳熟能详了,大家都能说出个所以然来。但是如果我问你HTTP协议的请求方法有哪些?POST与GET的差 异?GET或POST传送数据量的大小有限制吗?HTTP响应的状态

关键字: c# http服务器

* 从 http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki 下载了 sqlite-netFx35-setup-b

关键字: c# sqlite
关闭
关闭