麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > 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);
        }
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品视频一区二区三区四 | 国产精品久久av | 国产欧美日韩在线不卡第一页 | 特黄一区二区三区 | 欧美一级黄色免费看 | 九九午夜 | 视频在线91 | 青草久久av | 欧美亚洲另类在线 | 九九热在线精品视频 | 91久久久国产精品 | 成人性生活视频在线观看 | 欧美成人理论片乱 | 久久靖品 | 欧洲精品久久 | 成人免费一区二区三区在线观看 | 欧美在线观看视频一区 | 日韩视频一区二区在线观看 | 爽成人777777婷婷 | 免费a级网站 | 日本一区二区久久久 | www69xxxxx| 视频一区二区中文字幕 | 久久精品国产清自在天天线 | 欧美黄 片免费观看 | 亚洲电影在线播放 | 热99热| 国产亚洲精品久久久久5区 日韩一级片一区二区三区 国产精品久久久久av | 哪里可以看免费的av | 桥本有菜免费av一区二区三区 | 国产精品一区二区x88av | 麻豆传传媒久久久爱 | 99pron| 欧美aaa| 成年人黄色免费电影 | 精品一区二区三区免费视频 | 国产精品视频自拍 | 亚洲第一激情 | 成人精品一区二区 | 亚洲精品动漫在线观看 | 国产va在线观看免费 |