我正在尝试创建一个调查项目。我打开了一个新的ASP。. NET空Web应用程序。我正在使用XAMMP能够使用MySQL。以下是我在我的项目中添加的项目:引用:
MySql.Data
MySql.Data.Entity
MySql.Data.Entity.EF6
库:
MySql.Data.MySqlClient
MySql.Data
这是GUI:[在这里输入链接描述][1]
DB名字:deneme2表名:dene列:ID(int-primary key-auto increment),cevap(text-utf8_turkish_ci)
protected void Button1_Click(object sender, EventArgs e)
{
string cs = "Server=localhost; Database=deneme2; uid=root; Password=;";
MySqlConnection baglanti = new MySqlConnection(cs);
baglanti.Open();
string a = baglanti.ConnectionTimeout.ToString();
try
{
Label2.Text = a;
MySqlCommand komut_kayit1 = new MySqlCommand("INSERT INTO dene (cevap) VALUES ('" + RadioButtonList1.SelectedItem + "'");
komut_kayit1.ExecuteNonQuery();
baglanti.Close();
Label2.Text = "Başarılı.";
}
catch (Exception ex)
{
//Label1.Text = "Başarısız.";
Label3.Text = Convert.ToString(ex);
}
}
Here is the error message that I got from label3
System.InvalidOperationException: Connection must be valid and open. at MySql.Data.MySqlClient.MySqlCommand.Throw(Exception ex) at MySql.Data.MySqlClient.MySqlCommand.CheckState() at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader() at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() at soru.Default.Button1_Click(Object sender, EventArgs e) in c:UsersAhmetDesktopBM4993. Hafta11. GÜNsorusoruDefault.aspx.cs:line 31
当我转到第31行时,只有括号,但是我检查了所有的括号,应该有一个失败。他们都很正常。
komut_kayit1.ExecuteNonQuery();
当我用//注释它时,我可以在Label2中看到Başarılı(成功)文本。我认为问题出在
MySqlCommand komut_kayit1 = new MySqlCommand("INSERT INTO dene (cevap) VALUES ('" + RadioButtonList1.SelectedItem + "'");
在我看来很正常。我该怎么办?
MySqlCommand komut_kayit1 = new MySqlCommand("INSERT INTO dene (cevap) VALUES ('" + RadioButtonList1.SelectedItem + "')",baglanti);
我的问题解决了。我忘了两个括号和"baglanti"。在这个项目之后,我将学习超载。谢谢你的建议。[1]: https://i.stack.imgur.com/G0x8y.png
在mysqlcommand sintax中有一个简单的错误。sql命令需要2个参数来执行查询:COMMAND STATEMENT => fine你通过它CONNECTIONSTRING =>尚未通过的baglanti
简式
MySqlCommand komut_kayit1 = new MySqlCommand("INSERT INTO dene (cevap) VALUES ('" + RadioButtonList1.SelectedItem + "'",baglanti);
长形式
MySqlCommand komut_kayit1 = new MySqlCommand("INSERT INTO dene (cevap) VALUES ('" + RadioButtonList1.SelectedItem + "'");
komut_kayait1.Connection=baglanti;
则可以调用ExeceuteNonQuery。
看一下重载方法New MysqlCommand:)
我希望它能帮助你。
另一个东西你的方法是非常开放的sqlinject。我建议你永远不要使用这种连接,如果你使用一个参数,而不是一个简单的字符串。