プロが教えるわが家の防犯対策術!

C#の.NETにてWindowsアプリを作成しています。
データベースはPostgreSQLで、Npgsqlを用いてVS2005とデータベースとを接続しています。

データベースとの接続を確立した後、INSERT文にて値を挿入する際、

NpgsqlCommand command = new NpgsqlCommand("INSERT INT TEST_TABLE VALUES(1, 2)", conn);

の「VALUES(1, 2)」の箇所を、
int型変数(int x=1, int y= 2)に置き換えるには、どのように記述すれば良いのでしょうか?

自分で調べた結果、VBでの類似した質問
http://oshiete.goo.ne.jp/qa/292069.html

を見つけましたが、C#の方法について見つけることが出来なかったので、
質問させていただきました。

解決策をご存知の方、ご教示お願い致します。

A 回答 (1件)

String.Formatを使えば埋め込めますが……。


String.Format("INSERT INT TEST_TABLE VALUES({0}, {1})", x, y)
MSDN: String.Format メソッド (System)
http://msdn.microsoft.com/ja-jp/library/system.s …


ただし,この方法では「ダメなプログラム」の典型例にしかなりません。
NpgsqlParameterを使って,パラメータ化するのが普通です。
# xおよびyがint型固定であるなら問題が発生しないのでString.Formatでもよいですが……。

NpgsqlCommand command = new NpgsqlCommand("INSERT INT TEST_TABLE VALUES(:x, :y)", conn);
command.Parameters.Add(new NpgsqlParameter("x", x));
command.Parameters.Add(new NpgsqlParameter("y", y));
おそらく,これで実行できるはずです。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

すみません。「INSERT INT」が「INSERT INTO」の間違いでした。
訂正し下記コードにて期待動作をさせることができました。

int x = 1;
int y = 2;
NpgsqlCommand command = new NpgsqlCommand("INSERT INTO TEST_TABLE VALUES(:x, :y)", conn);
command.Parameters.Add(new NpgsqlParameter("x", x));
command.Parameters.Add(new NpgsqlParameter("y", y));

お礼日時:2010/03/15 09:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています