<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    編程之道

    無論是批評的,贊揚的,指著的都請EMAIL給我,你的建議將是我前進的動力! 聯系我

    自己在一個項目使用到的DBUntil類


    先看下INETA牛人Stephen Walther的比較測試結論.希望對大家有用

    • DataReadear比DataSet快15%
    • SqlDataReader比OleDbDataReader快50%
    • 用DataReader的ASP風格的表格顯示比DataGrid綁定DataReader快60%
    • 用Ordinal的DataReader訪問字段比用名字訪問快15%
    • DataGrid中用AutoGenerateColumns=true比用顯式綁定快24%
    • 盡量用緩存

    測試由于比較局限,所以不一定很準確,但可以做個參考。

    Imports ?System.Data.OleDb


    Public ? Class ?ComDataBase

    ????
    Private ?LsConn? As ? String ?????????
    ???? Private ?LoleConn? As ?OleDbConnection?????????
    ???? Private ?LoleTrans? As ?OleDbTransaction????????

    ???? Public ? Sub ? New ()
    ????????
    Dim ?bOracle? As ? Boolean ? = ? False
    ????????
    Dim ?oIni? As ? New ?ComIniFile( " ..\INI\CCCC001.ini " )

    ????????
    If ?(oIni.GetValue( " DB " ,? " DBTYPE " )? = ? " ORACLE " )? Then
    ????????????bOracle?
    = ? True
    ????????
    End ? If

    ????????
    Dim ?sServer? As ? String ? = ?oIni.GetValue( " DB " ,? " SERVERNAME " )?

    ???????? Dim ?sDBName? As ? String ? = ?oIni.GetValue( " DB " ,? " DBNAME " )??????
    ???????? Dim ?sUser? As ? String ? = ?oIni.GetValue( " DB " ,? " USER " )??????????
    ???????? Dim ?sPsw? As ? String ? = ?oIni.GetValue( " DB " ,? " PASSWORD " )???????

    ????????
    If ?(bOracle)? Then
    ????????????LsConn? = ? " Provider=OraOLEDB.Oracle;Data?Source= " ? & ?sDBName?_
    ????????????????????
    & ? " ;User?Id= " ? & ?sUser? & ? " ;Password= " ? & ?sPsw? & ? " ;OLEDB.NET=true "
    ????????
    Else
    ????????????
    LsConn? = ? " Provider=sqloledb;Data?Source= " ? & ?sServer? & ? " ;Initial?Catalog= " ?_
    ?????????????????????
    & ?sDBName? & ? " ;User?Id= " ? & ?sUser? & ? " ;Password= " ? & ?sPsw? & ? " ; "
    ????????
    End ? If

    ????
    End?Sub

    'db open
    ???? Public ? Sub ?Open()
    ????????
    Try
    ????????

    ???????????? If ?( Not ?(LoleConn? Is ? Nothing ))? Then
    ??????
    ???????????????? If ?(LoleConn.State? = ?ConnectionState.Open)? Then
    ????????????????????
    ' '接続文字列は定義しない文字列
    ???????????????????? If ?(LoleConn.ConnectionString? <> ?LsConn)? Then
    ????????????????????????LoleConn.Close()
    ????????????????????????LoleConn.ConnectionString?
    = ?LsConn
    ????????????????????????LoleConn.Open()
    ????????????????????
    End ? If
    ????????????????
    Else
    ????????????????????
    ' '接続文字列は定義しない文字列
    ???????????????????? If ?(LoleConn.ConnectionString? <> ?LsConn)? Then
    ????????????????????????LoleConn.ConnectionString?
    = ?LsConn
    ????????????????????
    End ? If
    ????????????????????LoleConn.Open()
    ????????????????
    End ? If
    ????????????
    Else
    ????????????????LoleConn?
    = ? New ?OleDbConnection(LsConn)
    ????????????????LoleConn.Open()
    ????????????
    End ? If
    ????????
    Catch ?ex? As ?Exception
    ????????????ComLog.SetErrLog(
    " ComDataBase " ,? " Open " ,? " データベースの接続に失敗しました。 " ? & ?ex.Message)
    ????????????ComMsgBox.ErrMsg(
    " E-0002 " )
    ????????
    End ? Try
    ????
    End?Sub


    ???? Public ? Sub ?Close()
    ????????
    Try
    ????????????
    ' 'データ?ソースへの接続を閉じする
    ???????????? If ?( Not ?(LoleConn? Is ? Nothing ))? Then
    ????????????????LoleConn.Close()
    ????????????
    End ? If
    ????????
    Catch ?ex? As ?Exception
    ????????????ComLog.SetErrLog(
    " ComDataBase " ,? " Close " ,?ex.Message)
    ????????
    Finally
    ????????????
    ' '対象を解放する
    ???????????? If ?( Not ?(LoleConn? Is ? Nothing ))? Then
    ????????????????LoleConn.Dispose()
    ????????????????LoleConn?
    = ? Nothing
    ????????????
    End ? If
    ????????
    End ? Try
    ????
    End?Sub


    ???? Public ? Sub ?BeginTrans()
    ????????
    ' 'トランザクションを開始する
    ????????LoleTrans? = ?LoleConn.BeginTransaction()
    ????
    End?Sub


    ???? Public ? Sub ?Commit()
    ????????Execute(
    " Delete?システム管理?where?1=2 " )
    ????????
    ' 'トランザクションの終點をマークする
    ????????LoleTrans.Commit()
    ????
    End?Sub


    ???? Public ? Sub ?RollBack()
    ????????Execute(
    " Delete?システム管理?where?1=2 " )
    ????????
    ' 'データ変更を消去する
    ????????LoleTrans.Rollback()
    ????
    End?Sub

    ???? Public ? Function ?GetDataSet( ByVal ?sSQL? As ? String )? As ?DataSet
    ????????
    Dim ?oleAdapter? As ?OleDbDataAdapter
    ????????
    Dim ?oDataSet? As ?DataSet? = ? New ?DataSet

    ????????
    Try
    ????????????
    Dim ?oleCommand? As ? New ?OleDbCommand(sSQL,?LoleConn)
    ????????????oleCommand.Transaction?
    = ?LoleTrans
    ????????????oleAdapter?
    = ? New ?OleDbDataAdapter(oleCommand)
    ????????????oleAdapter.Fill(oDataSet)???????????????
    ' 'SQL文を検索する
    ???????? Finally
    ????????????oleAdapter.Dispose()????????????????????
    ' '対象を解放
    ???????? End ? Try
    ????????
    Return ?oDataSet
    ????
    End?Function


    ???? Public ? Function ?Query( ByVal ?sSQL? As ? String )? As ?OleDbDataReader
    ????????
    Dim ?oleCommand? As ? New ?OleDbCommand(sSQL,?LoleConn)
    ????????
    Try
    ????????????oleCommand.Transaction?
    = ?LoleTrans
    ????????????
    Return ?oleCommand.ExecuteReader()??????? ' 'SQL文を検索する
    ???????? Finally
    ????????????oleCommand.Dispose()????????????????????
    ' '対象を解放
    ???????? End ? Try
    ????
    End?Function


    ???? Public ? Function ?Query( ByVal ?sSQL? As ? String ,? ByRef ?aryOleDbParameter? As ?ArrayList)? As ?OleDbDataReader
    ????????
    Dim ?oleCommand? As ? New ?OleDbCommand(sSQL,?LoleConn)
    ????????
    Dim ?oleParam? As ?OleDbParameter

    ????????
    Try
    ????????????oleCommand.Transaction?
    = ?LoleTrans

    ????????????
    For ? Each ?oleParam? In ?aryOleDbParameter
    ????????????????oleCommand.Parameters.Add(oleParam)
    ????????????
    Next
    ????????????
    Return ?oleCommand.ExecuteReader()??????? ' 'SQL文を検索する
    ???????? Finally
    ????????????oleCommand.Dispose()????????????????????
    ' '対象を解放
    ???????? End ? Try
    ????
    End?Function


    ???? Public ? Function ?Execute( ByVal ?sSQL? As ? String )? As ? Integer
    ????????
    Dim ?oleCommand? As ? New ?OleDbCommand(sSQL,?LoleConn)??? ' 'OleDbCommandの新インスタンス
    ???????? Try
    ????????????oleCommand.Transaction?
    = ?LoleTrans
    ????????????
    Return ?oleCommand.ExecuteNonQuery()?????
    ???????? Finally
    ????????????oleCommand.Dispose()????????????????????
    ???????
    ?????? ?
    End ? Try
    ????
    End?Function

    ?

    ???? Public ? Function ?Execute( ByVal ?sSQL? As ? String ,? ByRef ?aryOleDbParameter? As ?ArrayList)? As ? Integer
    ????????
    Dim ?oleCommand? As ? New ?OleDbCommand(sSQL,?LoleConn)???
    ???????? Dim ?oleParam? As ?OleDbParameter
    ????????
    Try
    ????????????oleCommand.Transaction?
    = ?LoleTrans

    ????????????
    For ? Each ?oleParam? In ?aryOleDbParameter
    ????????????????oleCommand.Parameters.Add(oleParam)
    ????????????
    Next

    ????????????
    Return ?oleCommand.ExecuteNonQuery()?????
    ???????? Finally
    ????????????oleCommand.Dispose()??

    ?????? ?
    End ? Try
    ????
    End?Function

    基本功能都有了,對于小項目而言,這個類夠用了。
    ?

    posted on 2006-06-09 12:24 瘋流成性 閱讀(680) 評論(0)  編輯  收藏 所屬分類: .NET

    主站蜘蛛池模板: 成人福利免费视频| 热99RE久久精品这里都是精品免费 | 久久天天躁狠狠躁夜夜免费观看| 亚洲av永久无码精品秋霞电影影院| 91av免费在线视频| AV在线播放日韩亚洲欧| 成人福利在线观看免费视频| 亚洲精品456播放| 2022免费国产精品福利在线 | 在线观看永久免费| 激情综合亚洲色婷婷五月APP| 国产精品久久久久久久久久免费| 亚洲三级高清免费| 日韩毛片无码永久免费看| 婷婷亚洲综合五月天小说在线| 四虎国产精品免费视| 国产VA免费精品高清在线| 久久精品国产精品亚洲精品 | 亚洲色欲www综合网| 美女视频黄的全免费视频 | 亚洲熟妇中文字幕五十中出| 国产一区二区免费| 亚洲精品午夜久久久伊人| 午夜成人免费视频| 亚州**色毛片免费观看| 亚洲国产精品久久久久| 美女视频黄a视频全免费| 老司机午夜在线视频免费观| 亚洲色中文字幕无码AV| 4hu四虎最新免费地址| 亚洲精品色在线网站| 亚洲国产精品一区二区成人片国内| 99久热只有精品视频免费观看17| 国产成人精品日本亚洲专| 精品久久久久久久免费人妻| 一出一进一爽一粗一大视频免费的 | 美女黄色毛片免费看| 亚洲伊人tv综合网色| 日本高清免费不卡在线| 日本视频免费高清一本18| 亚洲天然素人无码专区|