<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

    主站蜘蛛池模板: 亚洲一区二区三区无码中文字幕| 欧洲人成在线免费| 美女无遮挡免费视频网站 | 8090在线观看免费观看| 久久精品成人免费网站| 久久久99精品免费观看| 无码免费一区二区三区免费播放 | 特级毛片aaaa级毛片免费| 自拍偷自拍亚洲精品播放| 爱情岛亚洲论坛在线观看| 四虎国产精品永免费| 久久精品成人免费国产片小草| 丁香六月婷婷精品免费观看| 国产成人无码免费网站| 中文字幕的电影免费网站| 久久久精品午夜免费不卡| 无码精品一区二区三区免费视频 | 日韩精品免费视频| 亚洲成人免费电影| 国产精品成人免费视频网站京东| 永久免费AV无码网站在线观看| 国产免费怕怕免费视频观看| 亚洲免费在线观看| 国产成人亚洲综合无码精品| 久久亚洲私人国产精品vA| 亚洲六月丁香婷婷综合| 日韩国产欧美亚洲v片| 一道本在线免费视频| 一级毛片免费观看| 成人毛片免费在线观看| 亚洲电影日韩精品| 亚洲av日韩av天堂影片精品| 亚洲一级毛片在线观| 老子影院午夜伦不卡亚洲| 两个人www免费高清视频| 最近2019中文字幕免费大全5| 97无码免费人妻超级碰碰夜夜| 亚洲电影日韩精品| 精品亚洲aⅴ在线观看| 亚洲国产成人AV在线播放| 91免费国产视频|