- PR -

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

投稿者投稿内容
Oregonian
会議室デビュー日: 2004/02/25
投稿数: 15
投稿日時: 2004-02-26 16:22
できましたー。かなりうれしいです。
まゆりんさん、、なちゃさん、ゆうじゅんさん、Jittaさん、
イクザスさん、NAL-6295さん、本当にありがとうございました。

>NAL-6295さん、見落としていました。
ご指摘ありがとうございます。言われていなければ
全然気づかなかったと思います。

で、問題はどうやらParameterだったようです。
イクザスさんの例を参考にして、最初のコードで
Parameterを使うとうまくいきました。

コード
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, Username, 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();

System.Data.OleDb.OleDbCommand testInsertCommand1;
testInsertCommand1 = new OleDbCommand(select, new OleDbConnection( strConnect ));

//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 != null && name != null && password != null)
{
testInsertCommand1.CommandText = "INSERT INTO [User](Username, Name, usrpwd, Admin ) values(username,name,password,isAdmin)";
testInsertCommand1.Connection.Open();// = this.oleDbConnection1;
testInsertCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Username", System.Data.OleDb.OleDbType.VarWChar, 50, "Username"));
testInsertCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Name", System.Data.OleDb.OleDbType.VarWChar, 50, "Name"));
testInsertCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("usrpwd", System.Data.OleDb.OleDbType.VarWChar, 50, "usrpwd"));
testInsertCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Admin", System.Data.OleDb.OleDbType.Boolean, 2, "Admin"));
// Add
testInsertCommand1.Parameters["Username"].Value = username;
testInsertCommand1.Parameters["Name"].Value = name;
testInsertCommand1.Parameters["usrpwd"].Value = password;
testInsertCommand1.Parameters["Admin"].Value = chkbxAdmin.Checked;

int iCnt = testInsertCommand1.ExecuteNonQuery();
//testInsertCommand1.ExecuteNonQuery();

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

// Close a command
testInsertCommand1.Connection.Close();

みなさん本当にありがとうございました。
みなさんのおかげでなんとか解決できました。
また質問の時はよろしくお願いします。
Hirashige
常連さん
会議室デビュー日: 2002/10/26
投稿数: 29
投稿日時: 2004-02-26 19:03
もう解決したから良いかなとも思いましたが...

当初のParametersを使わない方法でのやり方ですが。

1.テーブル名「User」でエラーになります(SQLの予約語?)。他の名前に変更する。
2.Accessの Yae/No フィールドは True または False の文字で指定します。
コード:
	String strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + Request.PhysicalApplicationPath + "TRCIDB.mdb;Mode=ReadWrite|Share Deny None;"; 

	OleDbConnection cn = new OleDbConnection(strConnect); 
	OleDbCommand objCommand = new OleDbCommand(); 
	objCommand.Connection = cn;
	cn.Open(); 
	objCommand.CommandText = "INSERT INTO User1( Username, Name, usrpwd, Admin ) values( '" + username + "','" + name + "','" + password + "'," + isAdmin.ToString() + ")";
	objCommand.ExecuteNonQuery();
	cn.Close();



 (テーブル名をUser1に変更して、isAdmin の部分のシングルコーテーションを外して、True または False の文字で指定する)

で出来ると思います。

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