火曜日, 11月 29, 2005
[VB2005]データベース
【「300 秒でズバリ !!」&「10 行でズバリ !!」シリーズ [Visual Studio 2005 対応版]】
http://www.microsoft.com/japan/msdn/thisweek/300x10/
■[VB.NET]
【Visual Basic .NET を使用してデータベースから DataSet オブジェクトを取得する方法】
http://support.microsoft.com/default.aspx?scid=kb;ja;301216
■参考サイト
【Microsoft Access Club】
http://www.accessclub.jp/index.html
【ソフトウエア開発部】
http://www.ilovex.co.jp/Division/SRD/
■DataSetを1回だけ初回に宣言してその変数を使いまわすときに前回の内容が残る。
DisposeメソッドではなくClearメソッドを使うとデータの内容が削除される。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdatadatasetmemberstopic.asp
■データベースの書込み
Public Function WriteTestTBL(ByRef pCon As OleDb.OleDbConnection) As Boolean
Dim oAdapter As New OleDb.OleDbDataAdapter
Dim oCmdBldr As New OleDb.OleDbCommandBuilder(oAdapter)
Dim oData As New DataSet
Dim oRow As DataRow
Dim i As Integer = 0
Dim strSql As String
Dim strTBL As String = "Test"
strSql = "SELECT * FROM Test WHERE (日時 = #2006/01/07 23:00:00#) AND (番号 = 1)"
oData.Clear()
oAdapter.SelectCommand = New OleDb.OleDbCommand(strSql, pCon)
oAdapter.SelectCommand.Transaction = pCon.BeginTransaction 'トランザクションセット
Try
If (oAdapter.Fill(oData, strTBL) > 0) Then
oData.Tables(0).Rows(0).Item("日時") = "2006/01/07 23:00:00"
oData.Tables(0).Rows(0).Item("番号") = 1
Else
oRow = oData.Tables(strTBL).NewRow()
oRow.BeginEdit()
oRow("日時") = "2006/01/07 23:00:00"
oRow("番号") = 1
oRow.EndEdit()
oData.Tables(strTBL).Rows.Add(oRow)
oCmdBldr = New OleDb.OleDbCommandBuilder(oAdapter)
oAdapter.InsertCommand = oCmdBldr.GetInsertCommand
End If
oAdapter.Update(oData, strTBL)
oData.AcceptChanges() 'データセットのコミット
Catch ex As Exception
oAdapter.SelectCommand.Transaction.Rollback() 'トランザクションロールバック
Finally
If (IsNothing(oAdapter.SelectCommand.Transaction) <> True) Then
oAdapter.SelectCommand.Transaction.Commit() 'トランザクションコミット
oAdapter.SelectCommand.Transaction = Nothing 'トランザクション解放
End If
End Try
WriteTestTBL = True
oData.Dispose()
oCmdBldr.Dispose()
oAdapter.Dispose()
oRow = Nothing
oData = Nothing
oCmdBldr = Nothing
oAdapter = Nothing
End Function
■参考サイト
【MCSE braindumps】
http://www.mcse.ms/
http://www.microsoft.com/japan/msdn/thisweek/300x10/
■[VB.NET]
【Visual Basic .NET を使用してデータベースから DataSet オブジェクトを取得する方法】
http://support.microsoft.com/default.aspx?scid=kb;ja;301216
■参考サイト
【Microsoft Access Club】
http://www.accessclub.jp/index.html
【ソフトウエア開発部】
http://www.ilovex.co.jp/Division/SRD/
■DataSetを1回だけ初回に宣言してその変数を使いまわすときに前回の内容が残る。
DisposeメソッドではなくClearメソッドを使うとデータの内容が削除される。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdatadatasetmemberstopic.asp
■データベースの書込み
Public Function WriteTestTBL(ByRef pCon As OleDb.OleDbConnection) As Boolean
Dim oAdapter As New OleDb.OleDbDataAdapter
Dim oCmdBldr As New OleDb.OleDbCommandBuilder(oAdapter)
Dim oData As New DataSet
Dim oRow As DataRow
Dim i As Integer = 0
Dim strSql As String
Dim strTBL As String = "Test"
strSql = "SELECT * FROM Test WHERE (日時 = #2006/01/07 23:00:00#) AND (番号 = 1)"
oData.Clear()
oAdapter.SelectCommand = New OleDb.OleDbCommand(strSql, pCon)
oAdapter.SelectCommand.Transaction = pCon.BeginTransaction 'トランザクションセット
Try
If (oAdapter.Fill(oData, strTBL) > 0) Then
oData.Tables(0).Rows(0).Item("日時") = "2006/01/07 23:00:00"
oData.Tables(0).Rows(0).Item("番号") = 1
Else
oRow = oData.Tables(strTBL).NewRow()
oRow.BeginEdit()
oRow("日時") = "2006/01/07 23:00:00"
oRow("番号") = 1
oRow.EndEdit()
oData.Tables(strTBL).Rows.Add(oRow)
oCmdBldr = New OleDb.OleDbCommandBuilder(oAdapter)
oAdapter.InsertCommand = oCmdBldr.GetInsertCommand
End If
oAdapter.Update(oData, strTBL)
oData.AcceptChanges() 'データセットのコミット
Catch ex As Exception
oAdapter.SelectCommand.Transaction.Rollback() 'トランザクションロールバック
Finally
If (IsNothing(oAdapter.SelectCommand.Transaction) <> True) Then
oAdapter.SelectCommand.Transaction.Commit() 'トランザクションコミット
oAdapter.SelectCommand.Transaction = Nothing 'トランザクション解放
End If
End Try
WriteTestTBL = True
oData.Dispose()
oCmdBldr.Dispose()
oAdapter.Dispose()
oRow = Nothing
oData = Nothing
oCmdBldr = Nothing
oAdapter = Nothing
End Function
■参考サイト
【MCSE braindumps】
http://www.mcse.ms/