国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Access > 正文

Access數據庫操作類

2024-09-07 19:05:01
字體:
來源:轉載
供稿:網友

access數據庫操作類accesshelper

using system;
using system.data;
using system.configuration;
using system.web;
using system.web.security;
using system.web.ui;
using system.web.ui.webcontrols;
using system.web.ui.webcontrols.webparts;
using system.web.ui.htmlcontrols;
using system.data.oledb;
using system.collections;
/// <summary>
/// accehelper 的摘要說明
/// </summary>
public static class accesshelper
{
    //數據庫連接字符串
    public static readonly string conn = "provider=microsoft.jet.oledb.4.0;data source=" + httpcontext.current.request.physicalapplicationpath + system.configuration.configurationmanager.connectionstrings["connectionstring"].connectionstring;
    // 用于緩存參數的hash表
    private static hashtable parmcache = hashtable.synchronized(new hashtable());
    /// <summary>
    ///  給定連接的數據庫用假設參數執行一個sql命令(不返回數據集)
    /// </summary>
    /// <param name="connectionstring">一個有效的連接字符串</param>
    /// <param name="commandtext">存儲過程名稱或者sql命令語句</param>
    /// <param name="commandparameters">執行命令所用參數的集合</param>
    /// <returns>執行命令所影響的行數</returns>
    public static int executenonquery(string connectionstring, string cmdtext, params oledbparameter[] commandparameters)
    {
        oledbcommand cmd = new oledbcommand();
        using (oledbconnection conn = new oledbconnection(connectionstring))
        {
            preparecommand(cmd, conn, null, cmdtext, commandparameters);
            int val = cmd.executenonquery();
            cmd.parameters.clear();
            return val;
        }
    }
    /// <summary>
    /// 用現有的數據庫連接執行一個sql命令(不返回數據集)
    /// </summary>
    /// <remarks>
    ///舉例: 
    ///  int result = executenonquery(connstring, "publishorders", new oledbparameter("@prodid", 24));
    /// </remarks>
    /// <param name="conn">一個現有的數據庫連接</param>
    /// <param name="commandtext">存儲過程名稱或者sql命令語句</param>
    /// <param name="commandparameters">執行命令所用參數的集合</param>
    /// <returns>執行命令所影響的行數</returns>
    public static int executenonquery(oledbconnection connection, string cmdtext, params oledbparameter[] commandparameters)
    {
        oledbcommand cmd = new oledbcommand();
        preparecommand(cmd, connection, null, cmdtext, commandparameters);
        int val = cmd.executenonquery();
        cmd.parameters.clear();
        return val;
    }
    /// <summary>
    ///使用現有的sql事務執行一個sql命令(不返回數據集)
    /// </summary>
    /// <remarks>
    ///舉例: 
    ///  int result = executenonquery(trans, "publishorders", new oledbparameter("@prodid", 24));
    /// </remarks>
    /// <param name="trans">一個現有的事務</param>
    /// <param name="commandtext">存儲過程名稱或者sql命令語句</param>
    /// <param name="commandparameters">執行命令所用參數的集合</param>
    /// <returns>執行命令所影響的行數</returns>
    public static int executenonquery(oledbtransaction trans, string cmdtext, params oledbparameter[] commandparameters)
    {
        oledbcommand cmd = new oledbcommand();
        preparecommand(cmd, trans.connection, trans, cmdtext, commandparameters);
        int val = cmd.executenonquery();
        cmd.parameters.clear();
        return val;
    }
    /// <summary>
    /// 用執行的數據庫連接執行一個返回數據集的sql命令
    /// </summary>
    /// <remarks>
    /// 舉例: 
    ///  oledbdatareader r = executereader(connstring, "publishorders", new oledbparameter("@prodid", 24));
    /// </remarks>
    /// <param name="connectionstring">一個有效的連接字符串</param>
    /// <param name="commandtext">存儲過程名稱或者sql命令語句</param>
    /// <param name="commandparameters">執行命令所用參數的集合</param>
    /// <returns>包含結果的讀取器</returns>
    public static oledbdatareader executereader(string connectionstring, string cmdtext, params oledbparameter[] commandparameters)
    {
        //創建一個sqlcommand對象
        oledbcommand cmd = new oledbcommand();
        //創建一個sqlconnection對象
        oledbconnection conn = new oledbconnection(connectionstring);
        //在這里我們用一個try/catch結構執行sql文本命令/存儲過程,因為如果這個方法產生一個異常我們要關閉連接,因為沒有讀取器存在,
        //因此commandbehaviour.closeconnection 就不會執行
        try
        {
            //調用 preparecommand 方法,對 sqlcommand 對象設置參數
            preparecommand(cmd, conn, null, cmdtext, commandparameters);
            //調用 sqlcommand  的 executereader 方法
            oledbdatareader reader = cmd.executereader(commandbehavior.closeconnection);
            //清除參數
            cmd.parameters.clear();
            return reader;
        }
        catch
        {
            //關閉連接,拋出異常
            conn.close();
            throw;
        }
    }
    /// <summary>
    /// 返回一個dataset數據集
    /// </summary>
    /// <param name="connectionstring">一個有效的連接字符串</param>
    /// <param name="cmdtext">存儲過程名稱或者sql命令語句</param>
    /// <param name="commandparameters">執行命令所用參數的集合</param>
    /// <returns>包含結果的數據集</returns>
    public static dataset executedataset(string connectionstring, string cmdtext, params oledbparameter[] commandparameters)
    {
        //創建一個sqlcommand對象,并對其進行初始化
        oledbcommand cmd = new oledbcommand();
        using (oledbconnection conn = new oledbconnection(connectionstring))
        {
            preparecommand(cmd, conn, null, cmdtext, commandparameters);
            //創建sqldataadapter對象以及dataset
            oledbdataadapter da = new oledbdataadapter(cmd);
            dataset ds = new dataset();
            try
            {
                //填充ds
                da.fill(ds);
                // 清除cmd的參數集合
                cmd.parameters.clear();
                //返回ds
                return ds;
            }
            catch
            {
                //關閉連接,拋出異常
                conn.close();
                throw;
            }
        }
    }
    /// <summary>
    /// 用指定的數據庫連接字符串執行一個命令并返回一個數據集的第一列
    /// </summary>
    /// <remarks>
    ///例如: 
    ///  object obj = executescalar(connstring, "publishorders", new oledbparameter("@prodid", 24));
    /// </remarks>
    ///<param name="connectionstring">一個有效的連接字符串</param>
    /// <param name="commandtext">存儲過程名稱或者sql命令語句</param>
    /// <param name="commandparameters">執行命令所用參數的集合</param>
    /// <returns>用 convert.to{type}把類型轉換為想要的 </returns>
    public static object executescalar(string connectionstring, string cmdtext, params oledbparameter[] commandparameters)
    {
        oledbcommand cmd = new oledbcommand();
        using (oledbconnection connection = new oledbconnection(connectionstring))
        {
            preparecommand(cmd, connection, null, cmdtext, commandparameters);
            object val = cmd.executescalar();
            cmd.parameters.clear();
            return val;
        }
    }
    /// <summary>
    /// 用指定的數據庫連接執行一個命令并返回一個數據集的第一列
    /// </summary>
    /// <remarks>
    /// 例如: 
    ///  object obj = executescalar(connstring, "publishorders", new oledbparameter("@prodid", 24));
    /// </remarks>
    /// <param name="conn">一個存在的數據庫連接</param>
    /// <param name="commandtext">存儲過程名稱或者sql命令語句</param>
    /// <param name="commandparameters">執行命令所用參數的集合</param>
    /// <returns>用 convert.to{type}把類型轉換為想要的 </returns>
    public static object executescalar(oledbconnection connection, string cmdtext, params oledbparameter[] commandparameters)
    {
        oledbcommand cmd = new oledbcommand();
        preparecommand(cmd, connection, null, cmdtext, commandparameters);
        object val = cmd.executescalar();
        cmd.parameters.clear();
        return val;
    }
    /// <summary>
    /// 將參數集合添加到緩存
    /// </summary>
    /// <param name="cachekey">添加到緩存的變量</param>
    /// <param name="cmdparms">一個將要添加到緩存的sql參數集合</param>
    public static void cacheparameters(string cachekey, params oledbparameter[] commandparameters)
    {
        parmcache[cachekey] = commandparameters;
    }
    /// <summary>
    /// 找回緩存參數集合
    /// </summary>
    /// <param name="cachekey">用于找回參數的關鍵字</param>
    /// <returns>緩存的參數集合</returns>
    public static oledbparameter[] getcachedparameters(string cachekey)
    {
        oledbparameter[] cachedparms = (oledbparameter[])parmcache[cachekey];
        if (cachedparms == null)
            return null;
        oledbparameter[] clonedparms = new oledbparameter[cachedparms.length];
        for (int i = 0, j = cachedparms.length; i < j; i++)
            clonedparms =(oledbparameter[])((icloneable)cachedparms).clone();
        return clonedparms;
    }
    /// <summary>
    /// 準備執行一個命令
    /// </summary>
    /// <param name="cmd">sql命令</param>
    /// <param name="conn">sql連接</param>
    /// <param name="trans">sql事務</param>
    /// <param name="cmdtext">命令文本,例如:select * from products</param>
    /// <param name="cmdparms">執行命令的參數</param>
    private static void preparecommand(oledbcommand cmd, oledbconnection conn, oledbtransaction trans, string cmdtext, oledbparameter[] cmdparms)
    {
        //判斷連接的狀態。如果是關閉狀態,則打開
        if (conn.state != connectionstate.open)
            conn.open();
        //cmd屬性賦值
        cmd.connection = conn;
        cmd.commandtext = cmdtext;
        //是否需要用到事務處理
        if (trans != null)
            cmd.transaction = trans;
        cmd.commandtype = commandtype.text;
        //添加cmd需要的存儲過程參數
        if (cmdparms != null)
        {
            foreach (oledbparameter parm in cmdparms)
                cmd.parameters.add(parm);
        }
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 夹江县| 珲春市| 武邑县| 临高县| 合川市| 长寿区| 广元市| 兰考县| 铜川市| 新营市| 北票市| 九龙坡区| 门源| 怀仁县| 泰顺县| 望奎县| 灌南县| 泰州市| 温宿县| 大埔县| 太仆寺旗| 黔南| 元阳县| 崇仁县| 宝鸡市| 定州市| 上思县| 酒泉市| 宜兴市| 齐河县| 安平县| 青海省| 罗甸县| 剑阁县| 铅山县| 温泉县| 霞浦县| 桐梓县| 页游| 长葛市| 山西省|