【发布时间】:2016-10-04 08:07:30
【问题描述】:
我有从我观看的教程中复制的代码,我们的代码在教程中非常相似。
当演示者运行代码时,它运行正常,但是当我尝试运行与教程中相同的代码时,我收到错误“参数无效”。
请帮忙
private void Viewbutton_Click(object sender, EventArgs e)
{
conection.Open();
string sqlQuery = "select studnum, course, f_name, l_name, color_image from table3 where studnum='" + textBox1.Text + "'";
cmd = new SqlCommand(sqlQuery, conection);
SqlDataReader dataread = cmd.ExecuteReader();
dataread.Read();
if (dataread.HasRows)
{
lblstudnum.Text = dataread[0].ToString();
lblcourse.Text = dataread[1].ToString();
lblfname.Text = dataread[2].ToString();
lbllname.Text = dataread[3].ToString();
byte[] images = (byte[])dataread[4];
if(images==null)
{
pictureBox1.Image = null;
}
else
{
MemoryStream mstreem = new MemoryStream(images);
pictureBox1.Image = Image.FromStream(mstreem);
}
}
else
{
MessageBox.Show("this data not available");
}
}
错误行是
pictureBox1.Image = Image.FromStream(mstreem);
【问题讨论】:
-
您应该在
WHERE子句中使用参数化查询而不是串联。 -
哪个教程建议使用字符串连接来构建 sql 查询?使用参数化查询。
-
我希望你们的学生都没有进入
0'; DROP TABLE table3; -- -
@andrewfaz 那是一个糟糕的教程。阅读What is SQL injection
-
@andrewfaz:然后忘记“教程”并从MSDN开始,尤其是Commands and Parameters部分。
标签: c# sql-server