・ADO.NET側の実装
''' <summary> ''' SELECT文を発行してDataSetを取得する・パラメータ対応版・トランザクション対応 ''' </summary> ''' <param name="psSQL">実行するSELECTクエリ</param> ''' <param name="paramList">クエリのパラメータリスト</param> ''' <param name="psConnectionParam">Ado接続管理オブジェクト</param> ''' <returns>SELECT文より取得したDataSet</returns> Public Function fDataSet_Fill_withParam(ByVal psSQL As String, _ ByVal paramList As List(Of OleDb.OleDbParameter), _ ByVal psConnectionParam As AdoConnection) As DataSet Dim pDataSet As New DataSet Dim con As OleDb.OleDbConnection = psConnectionParam.Connection Using cmd As New OleDb.OleDbCommand cmd.Connection = con cmd.CommandText = psSQL ' トランザクション下にあるならトランザクションを設定 If psConnectionParam.AtTransaction Then cmd.Transaction = psConnectionParam.Transaction End If Using adapter As New OleDb.OleDbDataAdapter(cmd) ' パラメータ設定 For i As Integer = 0 To paramList.Count - 1 adapter.SelectCommand.Parameters.Add(paramList(i)) Next ' タイムアウト設定 adapter.SelectCommand.CommandTimeout = psConnectionParam.TimeOut ' Query実行 adapter.Fill(pDataSet) End Using End Using Return pDataSet End Function ''' <summary> ''' INSERT/UPDATE/DELETEクエリを実行する・パラメータ対応版・トランザクション対応 ''' </summary> ''' <param name="psSQL">実行するクエリ</param> ''' <param name="paramList">クエリのパラメータリスト</param> ''' <param name="psConnectionParam">Ado接続管理オブジェクト</param> ''' <returns>INSERT文の場合、対象テーブルにIDENTITY列があればその新しい値。それ以外なら0。</returns> Public Function fExecuteNonQueryWithParam(ByVal psSql As String, _ ByVal paramList As List(Of OleDb.OleDbParameter), _ ByVal psConnectionParam As AdoConnection) As Integer ' AutoIncを持つテーブルにinsertした場合に、新しいIDENTITYの値を取得する ' Updateした場合、AutoIncがない場合は、nothingが戻ってくる Dim FAdoHelper As New ADODriverHelper(psConnectionParam.ConnectionString) psSql = FAdoHelper.getInsertAndIdentity(psSql) Dim con As OleDb.OleDbConnection = psConnectionParam.Connection Using cmd As New OleDb.OleDbCommand cmd.Connection = con cmd.CommandTimeout = psConnectionParam.TimeOut cmd.CommandText = psSql ' トランザクション下にあるならトランザクションを設定 If psConnectionParam.AtTransaction Then cmd.Transaction = psConnectionParam.Transaction End If ' パラメータ For i As Integer = 0 To paramList.Count - 1 cmd.Parameters.Add(paramList(i)) Next ' Query実行 Dim resObj As Object = cmd.ExecuteScalar() If TypeOf (resObj) Is Decimal Then Return CInt(resObj) Else Return 0 End If End Using End Function