私は Visual C# 2010 と MySQL バージョン 5.1.48-community を使用しています。このコードで私を助けてくれることを願っています。私はそれが私に働いているとは思いません。私は何が欠けていますか?
string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
MySqlConnection conn = new MySqlConnection(connString);
conn.Open();
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO room(person,address) VALUES(@person, @address)";
comm.Parameters.Add("@person", "Myname");
comm.Parameters.Add("@address", "Myaddress");
comm.ExecuteNonQuery();
conn.Close();
そして、コンパイルしようとすると。それは言います:
Person 列を null にすることはできません
編集:
しかし、このコードを試すと。
comm.CommandText = "INSERT INTO room(person,address) VALUES('Myname', 'Myaddress')";
しかし、このコードはSQLインジェクション攻撃を受けやすいですが、機能し、エラーは発生しません。
編集:
これを使ってみました。ここで見つけたので、うまくいくと思いましたが、このエラーが発生します
インデックス (ゼロベース) は、ゼロ以上で、引数リストのサイズ未満でなければなりません。
何か案が?
string a = "myname";
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO room(person,address) VALUES(?,?)";
//cmd.Prepare();
cmd.Parameters.Add("person", MySqlDbType.VarChar).Value = a;
cmd.Parameters.Add("address", MySqlDbType.VarChar).Value = "myaddress";
cmd.ExecuteNonQuery(); // HERE I GOT AN EXCEPTION IN THIS LINE
どんな助けでも大歓迎です。
編集済み: 解決済み 私はこのコードを使用しました:
cmd.CommandText = "INSERT INTO room(person,address) VALUES(?person,?address)";
cmd.Parameters.Add("?person", MySqlDbType.VarChar).Value = "myname";
cmd.Parameters.Add("?address", MySqlDbType.VarChar).Value = "myaddress";
cmd.ExecuteNonQuery();
ありがとうございます!