重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お目に頂きありがとうございます.
Visual Studio C# .NETのデータベースプログラミングの初歩の部分でつまずいてしまい,手助けしてください;

private OleDbConnection cn;
private OleDbCommand cmd;

private void Make()
{
String id1 = idText1.Text, passwd = passwdText1.Text;

/* make up Connection. */
cn = new OleDbConnection();
cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;" +
"Data Source=D:\\Work\\Visual Studio .NET 2003\\otherApplication1\\Custom.mdb";
cn.Open();


// レコードの追加
try
{
cmd = new OleDbCommand("INSERT INTO Table_custom values(id1, passwd, 0)", cn);
cmd.ExecuteNonQuery();
}
catch(Exception ex)
{
MessageBox.Show("そのIDはダメ☆");
this.Dispose();
}
}

レコード内に入っているIDと被らなければ,入力されたID・パスワード・0(初期値)をテーブルに代入しようとしています.
しかし何故か代入がされず,catch文に入ってしまいます.

どうしてでしょうか?
尚,テーブルのキーは,ID(Primary Key), Passwd, Balance です.


よろしくお願い致します

A 回答 (2件)

No.1の者です。



テーブルの3項目はテキスト型ですか?
テキスト型の項目は、
シングルクォーテーションで囲う必要があるようです。
3項目ともにテキスト型ならこれで通りました。

"INSERT INTO Table_custom values('"+id1 +"','"+ passwd + "','0')"
    • good
    • 0
この回答へのお礼

型は,string, string, int という構成でして,
2つのstring型にシングルコーテーションで括ると
うまくinsertされました.

この「'」で括る場合や「"+変数+"」といったモノは
何を参照して知られたのでしょうか?


遅くなりましたが,親身に大変ありがとうございます

お礼日時:2005/08/03 13:32

代入変数が文字列として扱われているからだと思います。



"INSERT INTO Table_custom values(id1, passwd, 0)"
 ↓
"INSERT INTO Table_custom values("+id1 +","+ passwd + ",0)"

これでどうでしょうか?
    • good
    • 0
この回答へのお礼

たしかにこのままだと文字列ではなかったですね;
+で括ると文字列に変わるのですか?

デバックしてみましたが,特に変化もなくcatchに入ってしまいました.

このINSERT文のどこが・・・(それ以外か?)

お礼日時:2005/08/03 00:01

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