当我尝试将数据插入文本框时,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);