C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Insert/Updateでのtrue/falseの設定


(過去ログ 23 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■10351 / inTopicNo.1)  Insert/Updateでのtrue/falseの設定
  
□投稿者/ みこ (21回)-(2007/11/16(Fri) 01:33:46)

分類:[C#] 

2007/11/16(Fri) 01:50:05 編集(投稿者)
2007/11/16(Fri) 01:42:53 編集(投稿者)


いつも教えていただきありがとうございます。

C# VS2005 Access2007(mdb) WindowsXP で開発しています。

FormでCheckBoxがチェックされた際に、それをDBに保存したいのですがうまくいきません。

bool Jouken = false;

if (cbJouken1.Checked == true)
{
Jouken = true;
  }

〜 中略 Connection確立 〜

try
{
cmd = new OleDbCommand("update JoukenTbl set "
+ " sortJouken = " + Jouken + " where Code = " + value1 , conn);

cmd.ExecuteNonQuery();
MessageBox.Show("DBを更新しました。", "通知");
}
catch (Exception ex)
{
MessageBox.Show("条件更新に失敗しました。" + ex.Message.ToString());
}


DBではこのJoukenフィールドはYes/No型(True/False)で定義しており、この部分がおかしいのではないかと思っています。

エラーは「1つ以上の必要なパラメータの値が設定されていません」となります。

mdbを直接操作して値をいれ、読み出すことはできています。
読み出すときは
ds.Tables["JoukenTbl"].Rows[0]["sortJouken"].ToString()
としています。


検索等で調べてみたのですがわかりません。
何卒ご享受ください。
よろしくお願いします
引用返信 編集キー/
■10362 / inTopicNo.2)  Re[1]: Insert/Updateでのtrue/falseの設定
□投稿者/ 特攻隊長まるるう (94回)-(2007/11/16(Fri) 10:52:14)
No10351 (みこ さん) に返信
>エラーは「1つ以上の必要なパラメータの値が設定されていません」となります。
SQL 文に定義されていない文字が見つかったときに良く出るエラーだね。
フィールド名が全角半角で間違っていたり、綴りを間違えていたり。。。
とりあえず、実行される直前の SQL 文を出力して、Access とか DB で
直接実行してみたら?

>ご享受ください。
# どうでもいいけど間違ってるよ。

引用返信 編集キー/
■10370 / inTopicNo.3)  Re[1]: Insert/Updateでのtrue/falseの設定
□投稿者/ はつね (348回)-(2007/11/16(Fri) 12:54:39)
はつね さんの Web サイト
No10351 (みこ さん) に返信
>          cmd = new OleDbCommand("update JoukenTbl set "
>              + " sortJouken = " + Jouken + " where Code = " + value1 , conn);

Joken変数はbool型ですよね。それをUPDATE-SQL文という文字列にするときにそのまま連結してしまっていますが、
完成したSQL文はどのような文字列になっているか確認してみて下さい。


> 何卒ご享受ください。

特攻隊長まるるうさんも書かれていますが「ご享受」も「ご教授」も掲示板で回答をお願いする締めの言葉として使う誤りです。

引用返信 編集キー/
■10415 / inTopicNo.4)  Re[2]: Insert/Updateでのtrue/falseの設定
□投稿者/ みこ (22回)-(2007/11/16(Fri) 22:35:14)
アドバイスありがとうございます。

フィールド名等はタイプミス等ないようコピペしており、AccessにSQL文を張り付けて確認したら更新されていました。
Bool宣言していたJokenをStringでもつように変更し明示的にSystem.Convert.ToBoolean()でcastしたところ正常に動くようになりました。
なぜ直接Bool値でだめだったのか根本的な解決にはなっていませんが、当面はこれで動けば問題ありません。


享受→教示の間違いですね。これも申し訳ありませんでした。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -