Хороший день для всех, я использую Visual С# 2010 и MySQL версии 5.1.48-сообщества. Надеюсь, вы сможете помочь мне с этим кодом. Я не считаю, что это работает на меня. Что мне не хватает?
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 injection, но он работает, не дает мне ошибку.
Редакция:
Я попытался использовать это. Я нашел здесь, поэтому я думал, что это сработает, но даст мне эту ошибку
Индекс (основанный на нуле) должен быть больше или равен нулю и меньше, чем размер списка аргументов.
Любая идея?
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();
Спасибо, SO!