C#とAccess によるデータベースプログラミング(その1)
2009/09/27 Sun 15:30:48 [edit]
今更、AccessとC#でデータベースアプリケーションというのもどうかという感じもしなくはないが、Windowsのネットワーク環境で、小規模なデータベースを構築するのには今もって有用性のある組み合わせであると思う。またそのような小規模なデータベースを必要としている現場は、今もって多いように見受けられる。
さて、C#でデータベースプログラミングというと(VB.NETもそうだが)、便利なコントロールを用いて、ほとんどコードを書かずにデータを表示したりできるわけだが、自分は、そういう方法は用いないで、コーディングによってデータベース接続や、クエリーの実行などを実現している。それ以外の方法を覚えるのが面倒だったからとも言えるが、これでほとんどのことが出来るので、十分なのである。
下のコードは、Accessに接続する関数:conectAcessDB()と、選択クエリーを実行する関数:getDbTableSQL()である。
conectAcessDBは、引数にmdbファイルの所在パスと管理者パスワード、そして参照渡しでOleDbConnectionの変数を渡す。
getDbTableSQLは、引数にSQL文と参照渡しでDataTableの変数を渡し、データテーブルを取得するという具合である。
/// <summary>
// ---------------------------------------------------------
// * Function : conectAcessDB
// * Operation : Access DB接続
// ---------------------------------------------------------
/// </summary>
private bool conectAcessDB(string strDbPath, string strPasswd, ref System.Data.OleDb.OleDbConnection con)
{
// --- 接続文字列
string conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
conString += strDbPath + ";Jet OLEDB:Database Password=" + strPasswd;
con = new System.Data.OleDb.OleDbConnection(conString);
try
{
// --- DB Open
con.Open();
// --- DB Close
con.Close();
return true;
}
catch
{
return false;
}
}
/// <summary>
// ---------------------------------------------------------
// * Function : getDatTableSQL
// * Operation : SQL文に従ってデータテーブルに取込む
// ---------------------------------------------------------
/// </summary>
private bool getDbTableSQL(string strSQL, ref System.Data.DataTable dt)
{
bool ret = false;
if (strSQL != "")
{
System.Data.OleDb.OleDbDataAdapter da =
new System.Data.OleDb.OleDbDataAdapter(strSQL, conn);
// --- DataTableに格納する
dt = new System.Data.DataTable();
try
{
da.Fill(dt);
ret = true;
}
catch
{
string strTitle = "選択クエリー";
string strPrompt = "クエリーに失敗しました。";
MessageBox.Show(strPrompt,strTitle , MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
return ret;
}
サンプルとして、コンボボックスへアイテム追加するプログラムを書くとすると下のような感じになる。
System.Data.OleDb.OleDbConnection conn; // --- OleDb Connection
string strDBPath = @"C:\test.mdb"; // --- データベースパス
string strDBPassword = "pass"; // --- データベースパスワード
// ----------------------------------------------------------------------
DataTable dtUser; // --- tb_ユーザー
string strSQL; // --- SQL文
bool ret = false;
int i;
// --- DB接続
ret = conectAcessDB(strDBPath, strDBPassword, ref conn);
strSQL = "SELECT [tb_ユーザー].ユーザー名 FROM [tb_ユーザー] ";
// --- SQL文のデータテーブルを取得
ret = getDbTableSQL(strSQL, ref dtUser);
if (dtUser.Rows.Count > 0)
{
for (i = 0; i < dtUser.Rows.Count; i++)
{
// --- ユーザー名コンボボックスへアイテム追加
cmbUserName.Items.Add(dtUser.Rows[i][0].ToString());
}
}
// --- リソース解放
dtUser.Dispose();
conn.Dispose();
あとは、追加・更新・削除クエリーとトランザクション処理が出来れば、データベースプログラミングはほぼ完璧である(かな?)。けっこう簡単なものである。

さて、C#でデータベースプログラミングというと(VB.NETもそうだが)、便利なコントロールを用いて、ほとんどコードを書かずにデータを表示したりできるわけだが、自分は、そういう方法は用いないで、コーディングによってデータベース接続や、クエリーの実行などを実現している。それ以外の方法を覚えるのが面倒だったからとも言えるが、これでほとんどのことが出来るので、十分なのである。
下のコードは、Accessに接続する関数:conectAcessDB()と、選択クエリーを実行する関数:getDbTableSQL()である。
conectAcessDBは、引数にmdbファイルの所在パスと管理者パスワード、そして参照渡しでOleDbConnectionの変数を渡す。
getDbTableSQLは、引数にSQL文と参照渡しでDataTableの変数を渡し、データテーブルを取得するという具合である。
/// <summary>
// ---------------------------------------------------------
// * Function : conectAcessDB
// * Operation : Access DB接続
// ---------------------------------------------------------
/// </summary>
private bool conectAcessDB(string strDbPath, string strPasswd, ref System.Data.OleDb.OleDbConnection con)
{
// --- 接続文字列
string conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
conString += strDbPath + ";Jet OLEDB:Database Password=" + strPasswd;
con = new System.Data.OleDb.OleDbConnection(conString);
try
{
// --- DB Open
con.Open();
// --- DB Close
con.Close();
return true;
}
catch
{
return false;
}
}
/// <summary>
// ---------------------------------------------------------
// * Function : getDatTableSQL
// * Operation : SQL文に従ってデータテーブルに取込む
// ---------------------------------------------------------
/// </summary>
private bool getDbTableSQL(string strSQL, ref System.Data.DataTable dt)
{
bool ret = false;
if (strSQL != "")
{
System.Data.OleDb.OleDbDataAdapter da =
new System.Data.OleDb.OleDbDataAdapter(strSQL, conn);
// --- DataTableに格納する
dt = new System.Data.DataTable();
try
{
da.Fill(dt);
ret = true;
}
catch
{
string strTitle = "選択クエリー";
string strPrompt = "クエリーに失敗しました。";
MessageBox.Show(strPrompt,strTitle , MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
return ret;
}
サンプルとして、コンボボックスへアイテム追加するプログラムを書くとすると下のような感じになる。
System.Data.OleDb.OleDbConnection conn; // --- OleDb Connection
string strDBPath = @"C:\test.mdb"; // --- データベースパス
string strDBPassword = "pass"; // --- データベースパスワード
// ----------------------------------------------------------------------
DataTable dtUser; // --- tb_ユーザー
string strSQL; // --- SQL文
bool ret = false;
int i;
// --- DB接続
ret = conectAcessDB(strDBPath, strDBPassword, ref conn);
strSQL = "SELECT [tb_ユーザー].ユーザー名 FROM [tb_ユーザー] ";
// --- SQL文のデータテーブルを取得
ret = getDbTableSQL(strSQL, ref dtUser);
if (dtUser.Rows.Count > 0)
{
for (i = 0; i < dtUser.Rows.Count; i++)
{
// --- ユーザー名コンボボックスへアイテム追加
cmbUserName.Items.Add(dtUser.Rows[i][0].ToString());
}
}
// --- リソース解放
dtUser.Dispose();
conn.Dispose();
あとは、追加・更新・削除クエリーとトランザクション処理が出来れば、データベースプログラミングはほぼ完璧である(かな?)。けっこう簡単なものである。
テーマ: プログラミング
ジャンル: コンピュータ
« 画面遷移を画像で判断し、マウス入力などを自動化するソフト UWSC
C# でAccess2003の管理者パスワードを変更する »
コメントの投稿
この記事に対するコメント
トラックバック
| h o m e |