@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

データベースにチェックボックスの情報の追加の仕方

投稿者投稿内容
Oregonian
会議室デビュー日: 2004/02/25
投稿数: 15
投稿日時: 2004-02-25 14:26
データベースにチェックボックスの内容を追加(Add)
したいのですができません。テキストの部分は問題なく
できますが、チェックボックスを追加すると、下のような
エラーが出ます。

Syntax error in INSERT INTO statement
Source Error: objCommand.ExecuteNonQuery();

Adminとなっている部分がチェックボックスを使用しています。
どこを直せばよいのか教えてください。
よろしくお願いします。

コード(ボタンを押すとUserテーブルにAddされる)
private void btnAdd_Click(object sender, System.EventArgs e)
{
String strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + Request.PhysicalApplicationPath + "TRCIDB.mdb;Mode=ReadWrite|Share Deny None;";
String select = "SELECT UIdNum, Usename, Name, usrpwd, Admin FROM User";

//Create a connection
OleDbConnection cn = new OleDbConnection(strConnect);
cn.Open();
//create a new OleDbCommand
System.Data.OleDb.OleDbCommand objCommand = new OleDbCommand( select, new OleDbConnection( strConnect ));
objCommand.Connection.Open();

//strings to store the text fields
string username = this.txtUsername.Text.Trim();
string name = this.txtName.Text.Trim();
string password = this.txtPassword.Text.Trim();
             ***ここの部分を間違えていると思うのですが***
bool isAdmin = this.chkbxAdmin.Checked;

//adds the new information into the database
if ( username != "" && name != "" && password != "")
{
objCommand.CommandText = "INSERT INTO User( Username, Name, usrpwd, Admin ) values( '" + username + "','" + name + "','" + password + "','" + isAdmin + "')";
objCommand.ExecuteNonQuery();

txtUsername.Text = "";
txtName.Text = "";
txtPassword.Text = "";
chkbxAdmin.Checked = false;

this.Label5.Text = "Software added properly";
}
else
{
this.Label5.Text = "Software not added properly";
}

objCommand.Connection.Close();

まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-02-25 14:48
「Admin」項目の型と登録しようとしている型が一致してないんじゃ・・・?
_________________
まゆりん @ わんくま同盟
Blog る。
Oregonian
会議室デビュー日: 2004/02/25
投稿数: 15
投稿日時: 2004-02-25 14:53
返答ありがとうございます。

Admin項目の型というのはテーブルに登録
してある型ってことですよね?
AdminはYes/Noにしてあるのですが、Boolでは
ないのですか?
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-02-25 15:27
えーと、もしかしてAccessですか?
Accessはよく分からないですが、
 チェックがついている=Yes か True か On か -1
 チェックがついてない=No か False か Off か 0
で試してみては如何でしょうか。

大した回答できなくてごめんなさい。

_________________
まゆりん @ わんくま同盟
Blog る。
Oregonian
会議室デビュー日: 2004/02/25
投稿数: 15
投稿日時: 2004-02-25 15:35
すみません、きちんと書かなくて。
そうです、Accessを使っています。

<チェックがついている=Yes か True か On か -1
<チェックがついてない=No か False か Off か 0
これは具体的にはどうすればよいのでしょうか?
bool isAdmin = true;
という感じでしょうか?
Webページ上でチェックボックスがチェックされた時に
Trueを返したいです。

ほんと質問ばかりですみません。
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-02-25 15:51
いえいえ、こちらこそ舌足らずですみません。

で、今ふとコードを見て思ったんですが、
もしかしてシングルコーテーションで囲んでるからじゃないんですかね?
#文字列と判断されてるかも。見逃してた
一度外して実行してみてください。

こんなかんじ。
objCommand.CommandText = "INSERT INTO User( Username, Name, usrpwd, Admin ) values( '" + username + "','" + name + "','" + password + "'," + isAdmin + ")";

#とりあえずさっき言ってたことは忘れてください(笑)。

※コード追加、説明追加
_________________

まゆりん@人生Try and Error!(笑)

[ メッセージ編集済み 編集者: まゆりん 編集日時 2004-02-25 15:59 ]
Oregonian
会議室デビュー日: 2004/02/25
投稿数: 15
投稿日時: 2004-02-25 16:03
シングルコーテーション外してみました。
が、しかし同じエラーが出てしまいました(悲)。
テキストボックスとチェックボックスに値を入れ
Addボタンを押すとエラーは下のような感じです。
Line86のところが赤くなってます。

チェックボックスのせいではないのかなと思ったりもしてきました・・・。

Syntax error in INSERT INTO statement.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.OleDb.OleDbException: Syntax error in INSERT INTO statement.

Source Error:


Line 84: {
Line 85: objCommand.CommandText = "INSERT INTO User( Username, Name, usrpwd, Admin ) values(" + username + "," + name + "," + password + "," + isAdmin + ")";
Line 86: objCommand.ExecuteNonQuery();
Line 87:
Line 88: txtUsername.Text = "";

まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-02-25 16:08
えっと、「isAdmin」のところだけでいいです<シングルコーテーション
全部外しちゃったんですね・・・^^;

慌ててさっき追加したんですが間に合わなかったか・・・。
_________________
まゆりん @ わんくま同盟
Blog る。

スキルアップ/キャリアアップ(JOB@IT)