国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
    主站蜘蛛池模板: 土默特左旗| 肥乡县| 永和县| 宁陵县| 来安县| 乐亭县| 霍州市| 建水县| 平和县| 平原县| 乐至县| 安丘市| 揭东县| 临邑县| 浮山县| 渭源县| 麻城市| 沈丘县| 栾川县| 尚志市| 昭苏县| 荣成市| 朝阳市| 自治县| 永济市| 大渡口区| 巴彦县| 梅河口市| 莱西市| 永福县| 驻马店市| 普安县| 平山县| 海兴县| 车致| 宜川县| 江源县| 怀远县| 莱芜市| 六安市| 尤溪县|