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

首頁(yè) > 開發(fā) > 綜合 > 正文

用C#實(shí)現(xiàn)的數(shù)據(jù)庫(kù)抽象工廠(三)

2024-07-21 02:19:44
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
  • 網(wǎng)站運(yùn)營(yíng)seo文章大全
  • 提供全面的站長(zhǎng)運(yùn)營(yíng)經(jīng)驗(yàn)及seo技術(shù)!
  • 用c#實(shí)現(xiàn)的數(shù)據(jù)庫(kù)抽象工廠(三)

    以下是在應(yīng)用時(shí)真正要調(diào)用到的類:

    (6)dbaccess.cs

    using system;
    using system.data;

    namespace dbservice
    {
    /// <summary>
    /// dbaccess類,即進(jìn)行數(shù)據(jù)庫(kù)訪問(wèn)時(shí)需要調(diào)用的類
    /// </summary>
    public class dbaccess
    {
    /// <summary>
    /// dbaccess構(gòu)造函數(shù)
    /// </summary>
    public dbaccess()
    {
    }

    /// <summary>
    /// 無(wú)條件查詢操作,即查詢表中所有記錄
    /// </summary>
    /// <param name="strtablename">表名</param>
    /// <param name="strcolumn">列名組</param>
    /// <returns>無(wú)條件查詢結(jié)果</returns>
    public static dataset selectall(string strtablename, string[] strcolumn)
    {
    dataset ds = new dataset();
    factory factory = factory.getinstance();
    abstractdbfactory abstractdbfactory = factory.createinstance();
    idbconnection concretedbconn = abstractdbfactory.createconnection();
    concretedbconn.connectionstring = abstractdbfactory.getconnectionstring();
    concretedbconn.open();
    idbcommand concretedbcommand = abstractdbfactory.createcommand();
    idbtransaction concretedbtrans = abstractdbfactory.createtransaction(concretedbconn);
    concretedbcommand.connection = concretedbconn;
    concretedbcommand.transaction = concretedbtrans;
    idbdataadapter concretedbadapter = abstractdbfactory.createdataadapter();
    try
    {
    string strsql = "select ";
    for(int i = 0; i < strcolumn.length - 1; i++)
    {
    strsql += (strcolumn[i] + ", ");
    }
    strsql += (strcolumn[strcolumn.length - 1] + " from " + strtablename);
    concretedbcommand.commandtext = strsql;
    concretedbadapter.selectcommand = concretedbcommand;
    concretedbadapter.fill(ds);
    concretedbtrans.commit();
    }
    catch
    {
    concretedbtrans.rollback();
    ds.clear();
    throw;
    }
    finally
    {
    concretedbconn.close();
    }
    return ds;
    }

    /// <summary>
    /// 條件查詢操作
    /// </summary>
    /// <param name="strtablename">表名</param>
    /// <param name="strcolumn">列名組</param>
    /// <param name="strcondition">條件</param>
    /// <returns>條件查詢結(jié)果</returns>
    public static dataset select(string strtablename, string[] strcolumn, string strcondition)
    {
    dataset ds = new dataset();
    factory factory = factory.getinstance();
    abstractdbfactory abstractdbfactory = factory.createinstance();
    idbconnection concretedbconn = abstractdbfactory.createconnection();
    concretedbconn.connectionstring = abstractdbfactory.getconnectionstring();
    concretedbconn.open();
    idbcommand concretedbcommand = abstractdbfactory.createcommand();
    idbtransaction concretedbtrans = abstractdbfactory.createtransaction(concretedbconn);
    concretedbcommand.connection = concretedbconn;
    concretedbcommand.transaction = concretedbtrans;
    idbdataadapter concretedbadapter = abstractdbfactory.createdataadapter();
    try
    {
    string strsql = "select ";
    for(int i = 0; i < strcolumn.length - 1; i++)
    {
    strsql += (strcolumn[i] + ", ");
    }
    strsql += (strcolumn[strcolumn.length - 1] + " from " + strtablename + " where " + strcondition);
    concretedbcommand.commandtext = strsql;
    concretedbadapter.selectcommand = concretedbcommand;
    concretedbadapter.fill(ds);
    concretedbtrans.commit();
    }
    catch
    {
    concretedbtrans.rollback();
    ds.clear();
    throw;
    }
    finally
    {
    concretedbconn.close();
    }
    return ds;
    }

    /// <summary>
    /// 單條記錄的插入操作
    /// </summary>
    /// <param name="strtablename">表名</param>
    /// <param name="strcolumn">列名組</param>
    /// <param name="strvalue">值組</param>
    public static void insert(string strtablename, string[] strcolumn, object[] strvalue)
    {
    factory factory = factory.getinstance();
    abstractdbfactory abstractdbfactory = factory.createinstance();
    idbconnection concretedbconn = abstractdbfactory.createconnection();
    concretedbconn.connectionstring = abstractdbfactory.getconnectionstring();
    concretedbconn.open();
    idbcommand concretedbcommand = abstractdbfactory.createcommand();
    idbtransaction concretedbtrans = abstractdbfactory.createtransaction(concretedbconn);
    concretedbcommand.connection = concretedbconn;
    concretedbcommand.transaction = concretedbtrans;
    try
    {
    string strsql = "insert into " + strtablename + " (";
    for(int i = 0; i < strcolumn.length - 1; i++)
    {
    strsql += (strcolumn[i] + ", ");
    }
    strsql += (strcolumn[strcolumn.length - 1] + ") values ('");
    for(int i = 0; i < strvalue.length - 1; i++)
    {
    strsql += (strvalue[i] + "', '");
    }
    strsql += (strvalue[strvalue.length - 1] + "')");
    concretedbcommand.commandtext = strsql;
    concretedbcommand.executenonquery();
    concretedbtrans.commit();
    }
    catch
    {
    concretedbtrans.rollback();
    throw;
    }
    finally
    {
    concretedbconn.close();
    }
    }

    /// <summary>
    /// 批量記錄的插入操作,即可一次向多張表中插入不同的批量記錄
    /// </summary>
    /// <param name="ds">批量記錄組成的dataset,dataset中的各個(gè)datatable名為表名,各datatable中的datacolumn名為列名</param>
    public static void insertset(ref dataset ds)
    {
    factory factory = factory.getinstance();
    abstractdbfactory abstractdbfactory = factory.createinstance();
    idbconnection concretedbconn = abstractdbfactory.createconnection();
    concretedbconn.connectionstring = abstractdbfactory.getconnectionstring();
    concretedbconn.open();
    idbcommand concretedbcommand = abstractdbfactory.createcommand();
    idbtransaction concretedbtrans = abstractdbfactory.createtransaction(concretedbconn);
    concretedbcommand.connection = concretedbconn;
    concretedbcommand.transaction = concretedbtrans;
    try
    {
    foreach(datatable dt in ds.tables)
    {
    foreach(datarow dr in dt.rows)
    {
    string strsql = "insert into " + dt.tablename + " (";
    for(int i = 0; i < dt.columns.count - 1; i++)
    {
    strsql += (dt.columns[i].caption + ", ");
    }
    strsql += (dt.columns[dt.columns.count - 1].caption + ") values ('");
    for(int i = 0; i < dt.columns.count - 1; i++)
    {
    strsql += (dr[i] + "', '");
    }
    strsql += (dr[dt.columns.count - 1] + "')");
    concretedbcommand.commandtext = strsql;
    concretedbcommand.executenonquery();
    }
    }
    concretedbtrans.commit();
    }
    catch
    {
    concretedbtrans.rollback();
    throw;
    }

    finally
    {
    concretedbconn.close();
    }
    }

    /// <summary>
    /// 無(wú)條件刪除操作,即刪除表中所有記錄
    /// </summary>
    /// <param name="strtablename">表名</param>
    public static void deleteall(string strtablename)
    {
    factory factory = factory.getinstance();
    abstractdbfactory abstractdbfactory = factory.createinstance();
    idbconnection concretedbconn = abstractdbfactory.createconnection();
    concretedbconn.connectionstring = abstractdbfactory.getconnectionstring();
    concretedbconn.open();
    idbcommand concretedbcommand = abstractdbfactory.createcommand();
    idbtransaction concretedbtrans = abstractdbfactory.createtransaction(concretedbconn);
    concretedbcommand.connection = concretedbconn;
    concretedbcommand.transaction = concretedbtrans;
    try
    {
    string strsql = "delete from " + strtablename;
    concretedbcommand.commandtext = strsql;
    concretedbcommand.executenonquery();
    concretedbtrans.commit();
    }
    catch
    {
    concretedbtrans.rollback();
    throw;
    }
    finally
    {
    concretedbconn.close();
    }
    }

    /// <summary>
    /// 條件刪除操作
    /// </summary>
    /// <param name="strtablename">表名</param>
    /// <param name="strcondition">條件</param>
    public static void delete(string strtablename, string strcondition)
    {
    factory factory = factory.getinstance();
    abstractdbfactory abstractdbfactory = factory.createinstance();
    idbconnection concretedbconn = abstractdbfactory.createconnection();
    concretedbconn.connectionstring = abstractdbfactory.getconnectionstring();
    concretedbconn.open();
    idbcommand concretedbcommand = abstractdbfactory.createcommand();
    idbtransaction concretedbtrans = abstractdbfactory.createtransaction(concretedbconn);
    concretedbcommand.connection = concretedbconn;
    concretedbcommand.transaction = concretedbtrans;
    try
    {
    string strsql = "delete from " + strtablename + " where " + strcondition;
    concretedbcommand.commandtext = strsql;
    concretedbcommand.executenonquery();
    concretedbtrans.commit();
    }
    catch
    {
    concretedbtrans.rollback();
    throw;
    }
    finally
    {
    concretedbconn.close();
    }
    }

    /// <summary>
    /// 無(wú)條件更新操作,即更新表中所有記錄
    /// </summary>
    /// <param name="strtablename">表名</param>
    /// <param name="strcolumn">列名組</param>
    /// <param name="strvalue">值組</param>
    public static void updateall(string strtablename, string[] strcolumn, object[] strvalue)
    {
    factory factory = factory.getinstance();
    abstractdbfactory abstractdbfactory = factory.createinstance();
    idbconnection concretedbconn = abstractdbfactory.createconnection();
    concretedbconn.connectionstring = abstractdbfactory.getconnectionstring();
    concretedbconn.open();
    idbcommand concretedbcommand = abstractdbfactory.createcommand();
    idbtransaction concretedbtrans = abstractdbfactory.createtransaction(concretedbconn);
    concretedbcommand.connection = concretedbconn;
    concretedbcommand.transaction = concretedbtrans;
    try
    {
    string strsql = "update " + strtablename + " set ";
    for(int i = 0; i < strcolumn.length - 1; i++)
    {
    strsql += (strcolumn[i] + " = '" + strvalue[i] + "', ");
    }
    strsql += (strcolumn[strcolumn.length - 1] + " = '" + strvalue[strvalue.length - 1] + "' ");
    concretedbcommand.commandtext = strsql;
    concretedbcommand.executenonquery();
    concretedbtrans.commit();
    }
    catch
    {
    concretedbtrans.rollback();
    throw;
    }
    finally
    {
    concretedbconn.close();
    }
    }

    /// <summary>
    /// 條件更新操作
    /// </summary>
    /// <param name="strtablename">表名</param>
    /// <param name="strcolumn">列名組</param>
    /// <param name="strvalue">值組</param>
    /// <param name="strcondition">條件</param>
    public static void update(string strtablename, string[] strcolumn, object[] strvalue, string strcondition)
    {
    factory factory = factory.getinstance();
    abstractdbfactory abstractdbfactory = factory.createinstance();
    idbconnection concretedbconn = abstractdbfactory.createconnection();
    concretedbconn.connectionstring = abstractdbfactory.getconnectionstring();
    concretedbconn.open();
    idbcommand concretedbcommand = abstractdbfactory.createcommand();
    idbtransaction concretedbtrans = abstractdbfactory.createtransaction(concretedbconn);
    concretedbcommand.connection = concretedbconn;
    concretedbcommand.transaction = concretedbtrans;
    try
    {
    string strsql = "update " + strtablename + " set ";
    for(int i = 0; i < strcolumn.length - 1; i++)
    {
    strsql += (strcolumn[i] + " = '" + strvalue[i] + "', ");
    }
    strsql += (strcolumn[strcolumn.length - 1] + " = '" + strvalue[strvalue.length - 1] + "' " + " where " + strcondition);
    concretedbcommand.commandtext = strsql;
    concretedbcommand.executenonquery();
    concretedbtrans.commit();
    }
    catch
    {
    concretedbtrans.rollback();
    throw;
    }
    finally
    {
    concretedbconn.close();
    }
    }
    }
    }



    最后一步,在web.config中的根結(jié)點(diǎn)configuration下增加一些關(guān)于數(shù)據(jù)庫(kù)連接字符串的變量:

    <appsettings>

    <add key="databasetype" value="sqlserver" />

    <add key="sqlserverserver" value="ricky" />
    <add key="sqlserverdatabase" value="test" />
    <add key="sqlserveruid" value="sa" />
    <add key="sqlserverpwd" value="henhaoba" />

    <add key="oledbprovider" value="microsoft.jet.oledb.4.0" />
    <add key="oledbdatasource" value="d:/test.mdb" />

    <add key="odbcdriver" value="microsoft access driver (*.mdb)" />
    <add key="odbcdbq" value="d:/test.mdb" />

    </appsettings>




    現(xiàn)在一切ok,大家可以通過(guò)改變web.config中的變量來(lái)使用不同的數(shù)據(jù)庫(kù)連接方式(sqlserver專用連接、oledb連接和odbc連接)連接不同的數(shù)據(jù)庫(kù),同時(shí)整個(gè)使用仍通過(guò)dbaccess,不受任何影響。歡迎大家批評(píng)指正:)



    全文完

    發(fā)表評(píng)論 共有條評(píng)論
    用戶名: 密碼:
    驗(yàn)證碼: 匿名發(fā)表
    主站蜘蛛池模板: 利津县| 凤城市| 嘉荫县| 丹巴县| 乌兰浩特市| 上蔡县| 上犹县| 彝良县| 天峻县| 兴海县| 芜湖市| 德州市| 电白县| 革吉县| 景泰县| 香港| 冷水江市| 溆浦县| 富锦市| 高台县| 德保县| 镶黄旗| 江北区| 富阳市| 七台河市| 莲花县| 石家庄市| 英德市| 景宁| 海伦市| 衡山县| 乐清市| 济南市| 湖南省| 喀喇沁旗| 灵武市| 修水县| 汪清县| 安乡县| 张家港市| 图木舒克市|