素直研究所 技術開発部

素直研究所の技術開発部ブログです。

04«1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.»06

スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 /  Trackback -- /  Comment --

△page top

C#とAccess によるデータベースプログラミング(その1) 

 今更、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();


 あとは、追加・更新・削除クエリーとトランザクション処理が出来れば、データベースプログラミングはほぼ完璧である(かな?)。けっこう簡単なものである。


ソフトウェア開発の素直研究所です。お仕事のご依頼はこちらからどうぞ!


スポンサーサイト

テーマ: プログラミング

ジャンル: コンピュータ

△page top

« 画面遷移を画像で判断し、マウス入力などを自動化するソフト UWSC
C# でAccess2003の管理者パスワードを変更する »

コメントの投稿















管理者にだけ表示を許可する

△page top

この記事に対するコメント

トラックバック

トラックバックURL
→http://sunaolabo.blog32.fc2.com/tb.php/38-dd9e26a3
この記事にトラックバックする(FC2ブログユーザー)

△page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。