ACCESS検索/更新/削除(C#/VB.NET)
2010年06月18日
ACCESS(アクセス)MDBを操作(接続/検索/追加/更新/削除)するサンプル(ソース/コード)です。System.Data.OleDbを使用しています。System.Data.OleDbを使用すると汎用的(SQLサーバーやORACLEも可)に使用出来て便利です。ちなみに、System.Data.SqlClientはSQLサーバー専用です。
System.Data.Odbcは汎用ですがODBC経由です。
ところで、このサンプルではプロバイダとしてMicrosoft.Jet.OLEDB.4.0を使用していますが、これはx86(32ビット)でのみ有効でx64(64ビット)では使用出来ません。x64(64ビット)のパソコンでMicrosoft.Jet.OLEDB.4.0を使用するためには、x86(32ビット)モードでコンパイルする必要があります。x86(32ビット)モードでコンパイルするためには、[プロジェクト]の[プロパティ]で[コンパイル]の[詳細コンパイルオプション]の[ターゲットCPU]を[x86]にする必要があります。
関連するサンプルはこちらです。
SQL SERVER検索/更新/削除(C#/VB.NET)
ORACLE検索/更新/削除(C#/VB.NET)
ACCESSパスワード変更(C#/VB.NET)
ACCESS最適化/修復(C#/VB.NET)
' -----------------------------------------------------------
' ACCESS(アクセス)MDBを操作するサンプル(VB.NET/VS2005)
' (必要)Imports System.Data.OleDb
Private Sub Button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click
Dim dbCon As OleDbConnection
Dim dbCmd As OleDbCommand
' ACCESS DB オープン
dbCon = New OleDbConnection()
Dim cst As String = ""
cst = cst & "Provider=Microsoft.Jet.OLEDB.4.0;"
cst = cst & "Data Source=" & "D:\Temp\db1.mdb"
dbCon.ConnectionString = cst
dbCon.Open()
' ACCESS DB レコード削除
dbCmd = New OleDbCommand( _
"delete from test", dbCon)
dbCmd.ExecuteNonQuery()
' ACCESS DB レコード追加1
dbCmd = New OleDbCommand( _
"insert into test(col1,col2,col3) " & _
"values('ABC',123,'2010-06-17 09:21:34')", dbCon)
dbCmd.ExecuteNonQuery()
' ACCESS DB レコード追加2
dbCmd = New OleDbCommand( _
"insert into test(col1,col2,col3) " & _
"values('AAA',111,'2010-11-11 11:11:11')", dbCon)
dbCmd.ExecuteNonQuery()
' ACCESS DB レコード更新
Dim dtm As String = Now.ToString("yyyy-MM-dd HH:mm:ss")
dbCmd = New OleDbCommand( _
"update test set " & _
"col1 = 'DEF', " & _
"col2 = '456', " & _
"col3 = '" & dtm & "' " & _
"where col1='ABC'", dbCon)
dbCmd.ExecuteNonQuery()
' ACCESS DB レコード検索
Dim dtTbl As New DataTable
dbCmd = New OleDbCommand( _
"select col1,col2,col3 from test", dbCon)
Dim dbAdp As New OleDbDataAdapter(dbCmd)
dbAdp.Fill(dtTbl)
For i As Integer = 0 To dtTbl.Rows.Count - 1
System.Diagnostics.Debug.WriteLine( _
dtTbl.Rows(i)("col1").ToString() & ":" & _
dtTbl.Rows(i)("col2").ToString() & ":" & _
dtTbl.Rows(i)("col3").ToString())
Next
' ACCESS DB クローズ
dbCon.Close()
dbCon.Dispose()
End Sub
' -----------------------------------------------------------
// ----------------------------------------------------------
// ACCESS(アクセス)MDBを操作するサンプル(C#.NET/VS2005)
// (必要)using System.Data.OleDb;
private void button1_Click(object sender, EventArgs e)
{
OleDbConnection dbCon;
OleDbCommand dbCmd;
// ACCESS DB オープン
dbCon = new OleDbConnection();
String cst = "";
cst = cst + "Provider=Microsoft.Jet.OLEDB.4.0;";
cst = cst + "Data Source=" + @"D:\Temp\db1.mdb";
dbCon.ConnectionString = cst;
dbCon.Open();
// ACCESS DB レコード削除
dbCmd = new OleDbCommand(
"delete from test", dbCon);
dbCmd.ExecuteNonQuery();
// ACCESS DB レコード追加1
dbCmd = new OleDbCommand(
"insert into test(col1,col2,col3) " +
"values('ABC',123,'2010-06-17 09:21:34')", dbCon);
dbCmd.ExecuteNonQuery();
// ACCESS DB レコード追加2
dbCmd = new OleDbCommand(
"insert into test(col1,col2,col3) " +
"values('AAA',111,'2010-11-11 11:11:11')", dbCon);
dbCmd.ExecuteNonQuery();
// ACCESS DB レコード更新
String dtm =
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
dbCmd = new OleDbCommand(
"update test set " +
"col1 = 'DEF', " +
"col2 = '456', " +
"col3 = '" + dtm + "' " +
"where col1='ABC'", dbCon);
dbCmd.ExecuteNonQuery();
// ACCESS DB レコード検索
DataTable dtTbl = new DataTable();
dbCmd = new OleDbCommand(
"select col1,col2,col3 from test", dbCon);
OleDbDataAdapter dbAdp = new OleDbDataAdapter(dbCmd);
dbAdp.Fill(dtTbl);
for (int i = 0; i <= dtTbl.Rows.Count - 1; i++)
{
System.Diagnostics.Debug.WriteLine(
dtTbl.Rows[i]["col1"].ToString() + ":" +
dtTbl.Rows[i]["col2"].ToString() + ":" +
dtTbl.Rows[i]["col3"].ToString());
}
// ACCESS DB クローズ
dbCon.Close();
dbCon.Dispose();
}
// ----------------------------------------------------------