<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 瘋流成性 閱讀(675) 評論(0)  編輯  收藏 所屬分類: .NET

    主站蜘蛛池模板: 亚洲 无码 在线 专区| 国产精品亚洲专区无码不卡| www一区二区www免费| 成人爱做日本视频免费| 亚洲最大的成人网站| 国产美女被遭强高潮免费网站| 亚洲AV色香蕉一区二区| 无码免费午夜福利片在线 | 精品国产污污免费网站 | 亚洲一区二区三区高清视频| 亚洲男人的天堂在线| 亚洲国产电影在线观看| 亚洲一卡2卡3卡4卡乱码 在线| 亚洲一区AV无码少妇电影| 亚洲国产一区二区三区在线观看| 亚洲成av人在线观看网站 | 亚洲国产成人无码av在线播放| 亚洲国产成人精品无码一区二区 | 香蕉蕉亚亚洲aav综合| 亚洲精品福利视频| 亚洲午夜精品一区二区公牛电影院 | 国产精品二区三区免费播放心| 免费va人成视频网站全| 国产亚洲AV手机在线观看 | 性色av免费观看| 无码国产亚洲日韩国精品视频一区二区三区 | 亚洲av成本人无码网站| 国产成人无码免费看片软件| 大地资源网高清在线观看免费| 6080午夜一级毛片免费看| 成人性生免费视频| 亚洲AV无码成人精品区大在线| 亚洲AV无码国产精品麻豆天美| 亚洲成av人片不卡无码| 久久水蜜桃亚洲AV无码精品| 中国黄色免费网站| 无码乱肉视频免费大全合集| 免费永久看黄在线观看app| 亚洲成色www久久网站夜月| 亚洲影视自拍揄拍愉拍| 未满十八私人高清免费影院|