c#参数是无效的SQL
本文关键字:SQL 无效 参数 | 更新日期: 2023-09-27 18:11:28
我有从教程中复制的代码,我们的代码在教程中非常相似。
当演示者运行代码时,它运行正常,但当我尝试运行与教程中相同的代码时,我得到一个错误"参数无效"。
请帮
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);
最好使用参数查询和列名,而不是使用[0],[1]等。数据读取器使用内存流。因此,您应该像下面这样使用,前提是有效的图像保存在数据库
中 var con = new SqlConnection("the connection string to database");
con.Open();
SqlCommand cmd = new SqlCommand(@"sql query",con);
byte[] images = null;
using (SqlDataReader dataread = cmd.ExecuteReader())
{
if (dataread.Read())
{
//lblstudnum.Text = dataread[0].ToString();
//lblcourse.Text = dataread[1].ToString();
//lblfname.Text = dataread[2].ToString();
//lbllname.Text = dataread[3].ToString();
images = (byte[])dataread["color_image"];// column name is recommended
}
}
con.Close();
if (images == null)
{
pictureBox1.Image = null;
}
else
{
MemoryStream mstreem = new MemoryStream(images);
pictureBox1.Image = Image.FromStream(mstreem);
}
可能不是有效的图像。在程序中添加一些调试代码(或设置一个手表),它将输出内存流的长度及其前几个字节。确保长度符合你的预期。确保文件前缀在那里,如果有的话,例如位图文件有两个字母的字母数字前缀。确保它没有被截断。确保它是一种允许的文件格式。问题可能是你的教练的数据库中有数据,而你的没有。