VC#を勉強しています。

今、accessのmdbファイルにoledbで接続してInsertやUpdateクエリを実行するプログラムを作っているのですが、パラメータクエリの生成方法やパラメータの置き換え方法がわかりません。

具体的には、
OleDbCommand oledb = new System.Data.OleDb.OleDbCommand("INSERT INTO InfoTest (test1,test2) VALUES(?,?)", connection);

とした後に、どういう方法で"?"をパラメータに置き換えて実行をすればいいのかがわからずに困っています。

また、こういったoledb経由でmdbを操作するのを勉強する際に役立つHPや書籍などを教えていただけると助かります。 よろしくお願いします。

回答の条件
  • 1人3回まで
  • 登録:2007/07/17 12:00:19
  • 終了:2007/07/17 16:19:24

回答(2件)

id:degucho No.1

degucho回答回数254ベストアンサー獲得回数682007/07/17 13:24:39

ポイント50pt

ADOをお使いになったことはありますか?

基本的にOleDbParameterをCommand.Parametersコレクションに

AddしてやってExecuteNonQueryするだけ(変な日本語だ)

あまりいいページがみつからないのですが

http://www.atmarkit.co.jp/fdotnet/basics/adonet03/adonet03_02.ht...

http://www.microsoft.com/japan/msdn/net/books/ProgADONET/chapter...

http://support.microsoft.com/kb/310070/ja

こんな感じです

きっちりやるなら高いですがこれがお勧めです。

プログラミングMicrosoft ADO.NET (マイクロソフト公式解説書)

もうすぐ新版がでるようです

http://bpstore.nikkeibp.co.jp/item/main/148910054980.html

id:syou11

すいません、具体的に質問文に書いたソースにどういう内容を追加していけばいいか教えていただけるとありがたいのですが…

mdbの場合は「@名前」じゃなくて「?」なのも余計混乱する原因になっています。

2007/07/17 15:38:27
id:degucho No.2

degucho回答回数254ベストアンサー獲得回数682007/07/17 15:52:31

ポイント50pt

コードに合わせる場合


OleDbParameter p1 = oledb.Parameters.Add("@適当な名前1", OleDbType.テーブルに合わせた型);

OleDbParameter p2 = oledb.Parameters.Add("@適当な名前2", OleDbType.テーブルに合わせた型);


と定義しておいて、実行したいところで

p1.Value = xxxxx;

p2.Value = xxxxx;

oledb.ExecuteNonQuery();


となります。


プレースホルダとの対応は「順序」となります。

?の出てきた順序とコレクションを追加した順序が対応します。

名前は、重複しなければなんでもいいですがテーブルの列名が

わかりやすいかとおもいます。


ちなみに、試してみればわかりますが、名前付きでも動きます。

しかし名前で対応してくれずあくまで順序になります。

id:syou11

ばっちりできました!

ありがとうございます!!

2007/07/17 16:18:45

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません