当我尝试将数据插入文本框时,System.Data.dll中出现未处理的“System.InvalidOperationException”类型的exceptionexception

我正在从visual studio创建一个与我的数据库的连接。

这是我的代码:

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; public partial class CM : System.Web.UI.Page { SqlConnection con = new SqlConnection("server =KIRITI; database =msdb; Integrated Security=True"); protected void Button1_Click(object sender, EventArgs e) { con.Open(); String NotesMaker = TextBox1.Text; SqlCommand cmd = new SqlCommand("Insert into NOTESMAKER(NOTESMAKER) Values('"+NotesMaker+"',con)"); cmd.ExecuteNonQuery(); cmd.CommandText = "Select@@Identity"; con.Close(); } } 

我在命令时遇到错误.Executenonquery():System.Data.dll中发生了’System.InvalidOperationException’类型的exception,但未在用户代码中处理

附加信息:ExecuteNonQuery:尚未初始化Connection属性。

请帮忙!! 我被封了两天!!

这是我看到字符串连接的第一个地方,导致conn成为查询的一部分。

你错放了字符串引号,你的陈述应该是:

 SqlCommand cmd = new SqlCommand("Insert into NOTESMAKER(NOTESMAKER) Values('" + NotesMaker + "'",con); 

在当前代码中,您传递字符串"Insert into NOTESMAKER(NOTESMAKER) Values('"+NotesMaker+"',con)" ,因此连接属性未初始化,因此exception。

您永远不应该使用字符串连接来创建查询,而是使用参数。 这将使您免于SQL注入 。 喜欢:

 using(SqlConnection con = new SqlConnection("connectionstring")) using(SqlCommand cmd = new SqlCommand("Insert into NOTESMAKER(NOTESMAKER) Values(@NotesMaker)",con)) { cmd.Parameters.AddWithValue("@NotesMaker", NotesMaker); con.Open(); cmd.ExecuteNonQuery(); } 

你把con放在SqlCommand的构造函数的第一个参数的引号内,因此代码是抱怨的,因为你没有设置你的SqlCommand的Connection属性

更改

 SqlCommand cmd = new SqlCommand("Insert into NOTESMAKER(NOTESMAKER) Values('"+NotesMaker+"',con)"); 

 SqlCommand cmd = new SqlCommand("Insert into NOTESMAKER(NOTESMAKER) Values('"+NotesMaker+"')",con);