【发布时间】:2017-07-21 04:00:17
【问题描述】:
如何解决 ExecuteNonQuery:连接属性未初始化。我已经做了我的 cmd.Connection = con;这是我的代码,请帮忙
Private void button1_Click(object sender, EventArgs e)
{
if (img_file != null)
{
FileStream fs = new FileStream(img_file, System.IO.FileMode.Open, System.IO.FileAccess.Read);
byte[]image = new byte[fs.Length];
fs.Read(image,0,Convert.ToString(fs.Length));
fs.Close();
SqlCommand cmd = new SqlCommand("INSERT INTO member_details (name,address,email,phone_number,picture) VALUES('"+textBox1.Text+"', '"+textBox2.Text+"', '"+textBox3.Text+"', @pic)", con);
SqlParameter prm = new SqlParameter("@pic", SqlDbType.VarBinary, image.Length, ParameterDirection.Input, false, 0,0, null, DataRowVersion.Current, image);
cmd.Parameters.Add(prm);
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();
}
}
【问题讨论】:
-
嗨,欢迎来到堆栈溢出。请参阅How to Ask 链接以获取有关如何提出问题并相应更新您的问题的更多详细信息。
-
格式化代码并贴出来
-
两件事,你在哪里初始化连接对象“con”,第二件事,你不需要设置 cmd.Connection= con 因为你已经将它作为参数传递给 SqlCommand 构造函数初始化
-
@Sujith:再来一个,小心sqlInjection
-
@un-lucky 是的。不要将文本框值直接添加到查询中,而是将查询参数化或使用带参数的 SP