VB.NET 【データベース操作編】



目次


データベースへの接続

データベースに接続する処理について解説します。

プログラムソース

Imports System.Data

Module Module1
Sub Main()

  Dim Cn As New OleDb.OleDbConnection
  Dim strCn As String

  strCn = "Provider=SQLOLEDB;" & _
           "Data Source=localhost\SQLExpress;" & _
           "Initial Catalog=Database;User ID=sa;Password=sa;"

  Cn.ConnectionString = strCn
  Cn.Open()

  Console.WriteLine("接続完了")
  Console.ReadKey()

  Cn.Close()
  Cn.Dispose()

End Sub
End Module

解説

OleDb.OleDbConnection

データベース接続に使用するクラス

OleDbConnection.ConnectionString = 接続文字列

接続文字列を設定します。

OleDbConnection.Open

データベースに接続します。

OleDbConnection.Close

データベースとの接続を切断します。


データの取得

データを取得する処理について解説します。

プログラムソース

Imports System.Data
Module Module1
Sub Main()
  Dim Cn As New OleDb.OleDbConnection
  Dim Cmd As New OleDb.OleDbCommand
  Dim Da As New OleDb.OleDbDataAdapter
  Dim Ds As New DataSet

  Cn.ConnectionString = "Provider=SQLOLEDB;" & _
           "Data Source=localhost\SQLExpress;" & _
           "Initial Catalog=Database;User ID=sa;Password=sa;"
  Cn.Open()

  Cmd.Connection = Cn
  Cmd.CommandText = "SELECT * FROM 社員マスタ"
  Da.SelectCommand = Cmd
  Da.Fill(Ds)

  For Each dr As DataRow In Ds.Tables(0).rows
    Console.WriteLine(dr.Item("社員コード") & " " & dr.Item("社員名"))
  Next
  Console.ReadKey()

  Cn.Close()
  Ds.Dispose() : Da.Dispose() : Cmd.Dispose() : Cn.Dispose() 
End Sub
End Module

解説

OleDb.OleDbDataAdapter

データ取得に使用するクラス

OleDb.OleDbCommand

実行するSQL文を設定するクラス

DataSet

取得したデータを格納するクラス

OleDbDataAdapter.Fill(データセット)

データセットにデータを格納します。


SQLの実行

SQLを実行する処理について解説します。

プログラムソース

Imports System.Data
Module Module1
Sub Main()

  Dim Cn As New OleDb.OleDbConnection
  Dim Cmd As New OleDb.OleDbCommand
  Dim strSQL As String

  Cn.ConnectionString = "Provider=SQLOLEDB;" & _
           "Data Source=localhost\SQLExpress;" & _
           "Initial Catalog=Database;User ID=sa;Password=sa;"
  Cn.Open()

  strSQL = "UPDATE 社員マスタ " & _
            "SET 部門コード = 3 " & _
            "WHERE 社員コード = 4"
  Cmd.Connection = Cn
  Cmd.CommandText = strSQL
  Cmd.ExecuteNonQuery()

  Console.WriteLine("更新完了") : Console.ReadKey()

  Cn.Close()
  Cmd.Dispose() : Cn.Dispose()
End Sub
End Module

解説

OleDbCommand.ExecuteNonQuery

指定されたSQL文を実行します。


トランザクション処理

トランザクション処理について解説します。

プログラムソース

Imports System.Data
Module Module1
Sub Main()
  Dim Cn As New OleDb.OleDbConnection
  Dim Cmd As New OleDb.OleDbCommand
  Dim Trn As OleDb.OleDbTransaction, strSQL As String
  Try
    Cn.ConnectionString = "Provider=SQLOLEDB;" & _
           "Data Source=localhost\SQLExpress;" & _
           "Initial Catalog=Database;User ID=sa;Password=sa;"
    Cn.Open()
    Trn = Cn.BeginTransaction()
    Cmd.Connection = Cn
    Cmd.Transaction = Trn
    strSQL = "INSERT 社員マスタ VALUES(1, '社員A', 1)"
    Cmd.CommandText = strSQL : Cmd.ExecuteNonQuery()
    strSQL = "INSERT 所有資格マスタ VALUES(1, 1, '簿記3級')"
    Cmd.CommandText = strSQL : Cmd.ExecuteNonQuery()
    Trn.Commit() : Console.WriteLine("成功")
  Catch Ex As Exception
    Trn.Rollback() : Console.WriteLine("失敗")
  Finally
    Cn.Close() : Cmd.Dispose() : Cn.Dispose() : Console.ReadKey()
  End Try
End Sub
End Module

解説

OleDbConnection.BeginTransaction

トランザクション処理を開始します。

OleDbTransaction.Commit

更新内容を確定する場合は、コミットします。

OleDbTransaction.Rollback

更新内容を破棄する場合は、ロールバックします。