⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqlhelper.cs

📁 ajax+access
💻 CS
字号:
using System;
using System.Data;
using System.Data.OleDb;
//该源码下载自www.51aspx.com(51aspx.com)


/// <summary>
/// Written:	[China] Zhao Zhe
/// Date:		Sep. 2004
/// Version		1.0
/// Support		MyBask<see cref="http://www.mybask.net"/>
/// Looking for the latest version or similar implentation of this function, please visit:<see cref="http://www.mybask.net"/>
/// 
/// Purpose:
/// To make connection to access easier.a Access version of SqlHelper.
/// Describe:
/// - Add several overload functions, which made it easy to use.
/// - only for DataReader
/// 
/// </summary>
public abstract class SqlHelper
{

    public SqlHelper()
    {

    }

    /// <summary>
    /// 用于执行一段SQL语句,只有三个最简的必要参数,省去了commandtype。
    /// To excute a SQL statement, which reuturns a integer stand for effect line number.
    /// default Command type is text
    /// </summary>
    /// <param name="connString">连接字符串 (Conntection String)</param>
    /// <param name="cmdText">command的字符串 (SQL Statement)</param>
    /// <param name="cmdParms">参数列表 (Paramters)</param>
    /// <returns>返回影响行数 (effect line number)</returns>
    public static int ExecuteNonQuery(string connString, string cmdText, params OleDbParameter[] cmdParms)
    {
        OleDbCommand cmd = new OleDbCommand();

        using (OleDbConnection conn = new OleDbConnection(connString))
        {
            PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);

            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return val;

        }
    }

    /// <summary>
    /// 用于执行一段SQL语句。
    /// To excute a SQL statement, which reuturns a integer stand for effect line number.
    /// </summary>
    /// <param name="connString">连接字符串 (Connection String)</param>
    /// <param name="cmdType">command的字符串 (SQL Statement)</param>
    /// <param name="cmdText">command的类型,具体见:CommandType (Command type)</param>
    /// <param name="cmdParms">参数列表 (Paramters)</param>
    /// <returns>返回影响行数 (effect line number)</returns>
    public static int ExecuteNonQuery(string connString, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
    {

        OleDbCommand cmd = new OleDbCommand();

        using (OleDbConnection conn = new OleDbConnection(connString))
        {
            PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return val;
        }
    }

    /// <summary>
    /// 用于执行一段SQL语句。传入的值是connection.
    /// To excute a SQL statement, which reuturns a integer stand for effect line number.
    /// a connection is passed in instead of a connection string
    /// </summary>
    /// <param name="conn">一个以初始化好的OleDbConnection (a Conncection)</param>
    /// <param name="connString">连接字符串 (Conntection String)</param>
    /// <param name="cmdText">command的字符串 (SQL Statement)</param>
    /// <param name="cmdParms">参数列表 (Paramters)</param>
    /// <returns>返回影响行数 (effect line number)</returns>
    public static int ExecuteNonQuery(OleDbConnection conn, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
    {

        OleDbCommand cmd = new OleDbCommand();

        PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
        int val = cmd.ExecuteNonQuery();
        cmd.Parameters.Clear();
        return val;
    }

    /// <summary>
    /// 用于执行一段SQL语句。需要传入一个事物Transaction.
    /// To excute a SQL statement, which reuturns a integer stand for effect line number.
    /// a transaction is reqired
    /// </summary>
    /// <param name="trans">一个Trasaction (Trasaction)</param>
    /// <param name="cmdType">command的字符串 (SQL Statement)</param>
    /// <param name="cmdText">command的类型,具体见:CommandType (Command type)</param>
    /// <param name="cmdParms">参数列表 (Paramters)</param>
    /// <returns>返回影响行数 (effect line number)</returns>
    public static int ExecuteNonQuery(OleDbTransaction trans, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
    {
        OleDbCommand cmd = new OleDbCommand();
        PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, cmdParms);
        int val = cmd.ExecuteNonQuery();
        cmd.Parameters.Clear();
        return val;
    }

    /// <summary>
    /// 用于执行一个Select语句返回一个datareader,省略了commandtype参数
    /// To excute a SQL statement, and reuturns a dataReader.
    /// default command type is text
    /// </summary>
    /// <param name="connString">连接字符串 (Conntection String)</param>
    /// <param name="cmdText">command的字符串 (SQL Statement)</param>
    /// <param name="cmdParms">参数列表 (Paramters)</param>
    /// <returns>datareader</returns>
    public static OleDbDataReader ExecuteReader(string connString, string cmdText, params OleDbParameter[] cmdParms)
    {
        OleDbCommand cmd = new OleDbCommand();
        OleDbConnection conn = new OleDbConnection(connString);

        // we use a try/catch here because if the method throws an exception we want to 
        // close the connection throw code, because no datareader will exist, hence the 
        // commandBehaviour.CloseConnection will not work
        try
        {
            PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);
            OleDbDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            //				cmd.Parameters.Clear();
            return rdr;
        }
        catch
        {
            conn.Close();
            throw;
        }
    }

    /// <summary>
    /// 用于执行一个Select语句返回一个datareader
    /// To excute a SQL statement, and reuturns a dataReader.
    /// </summary>
    /// <param name="connString">连接字符串 (Connection String)</param>
    /// <param name="cmdType">command的字符串 (SQL Statement)</param>
    /// <param name="cmdText">command的类型,具体见:CommandType (Command type)</param>
    /// <param name="cmdParms">参数列表 (Paramters)</param>
    /// <returns>dataReader</returns>
    public static OleDbDataReader ExecuteReader(string connString, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
    {
        OleDbCommand cmd = new OleDbCommand();
        OleDbConnection conn = new OleDbConnection(connString);

        // we use a try/catch here because if the method throws an exception we want to 
        // close the connection throw code, because no datareader will exist, hence the 
        // commandBehaviour.CloseConnection will not work
        try
        {
            PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
            OleDbDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            //				cmd.Parameters.Clear();
            return rdr;//51aspx
        }
        catch
        {
            conn.Close();
            throw;
        }
    }

    /// <summary>
    /// 用于读取一个值,查询所返回的是结果集中第一行的第一列,省去了commandtype
    /// To excute a SQL statement, and returns the first column of the first line
    /// Default command type is text
    /// </summary>
    /// <param name="connString">连接字符串 (Conntection String)</param>
    /// <param name="cmdText">command的字符串 (SQL Statement)</param>
    /// <param name="cmdParms">参数列表 (Paramters)</param>
    /// <returns>the first column of the first line</returns>
    public static object ExecuteScalar(string connString, string cmdText, params OleDbParameter[] cmdParms)
    {
        OleDbCommand cmd = new OleDbCommand();

        using (OleDbConnection conn = new OleDbConnection(connString))
        {
            PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);
            object val = cmd.ExecuteScalar();
            cmd.Parameters.Clear();
            return val;
        }
    }

    /// <summary>
    /// 用于读取一个值,查询所返回的是结果集中第一行的第一列
    /// To excute a SQL statement, and returns the first column of the first line
    /// </summary>
    /// <param name="connString">连接字符串 (Connection String)</param>
    /// <param name="cmdType">command的字符串 (SQL Statement)</param>
    /// <param name="cmdText">command的类型,具体见:CommandType (Command type)</param>
    /// <param name="cmdParms">参数列表 (Paramters)</param>
    /// <returns>the first column of the first line</returns>
    public static object ExecuteScalar(string connString, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
    {
        OleDbCommand cmd = new OleDbCommand();

        using (OleDbConnection conn = new OleDbConnection(connString))
        {
            PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
            object val = cmd.ExecuteScalar();
            cmd.Parameters.Clear();
            return val;
        }
    }


    /// <summary>
    /// 用于读取一个值,查询所返回的是结果集中第一行的第一列
    /// To excute a SQL statement, and returns the first column of the first line
    /// a connection is passed in instead of a connection string
    /// </summary>
    /// <param name="conn">一个以初始化好的OleDbConnection (a Conncection)</param>
    /// <param name="connString">连接字符串 (Conntection String)</param>
    /// <param name="cmdText">command的字符串 (SQL Statement)</param>
    /// <param name="cmdParms">参数列表 (Paramters)</param>
    /// <returns>the first column of the first line</returns>
    public static object ExecuteScalar(OleDbConnection conn, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
    {

        OleDbCommand cmd = new OleDbCommand();

        PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
        object val = cmd.ExecuteScalar();
        cmd.Parameters.Clear();
        return val;
    }

    /// <summary>
    /// 在执行SQL语句之前的准备工作
    /// </summary>
    /// <param name="cmd">command</param>
    /// <param name="conn">connection</param>
    /// <param name="trans">trasaction</param>
    /// <param name="cmdType">command类型</param>
    /// <param name="cmdText">command字符串</param>
    /// <param name="cmdParms">参数列表</param>
    private static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, CommandType cmdType, string cmdText, OleDbParameter[] 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 (OleDbParameter parm in cmdParms)
                cmd.Parameters.Add(parm);
        }
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -