我收到此错误...
必须声明标量变量“@Photo”
我的插入代码看起来像这样......
if (image1.Source != null)
{
FileStream fs = new FileStream("@Photo", FileMode.Open, FileAccess.Read);
byte[] imgByteArr = new byte[fs.Length];
fs.Read(imgByteArr, 0, Convert.ToInt32(fs.Length));
cmd.Parameters.Add(new SqlParameter("Photo", imgByteArr));
}
else
{
nonqueryCommand.Parameters.AddWithValue("@Photo", DBNull.Value);
}
SQL Server:列名Photo
和数据类型image
我尝试了this网站上的一个例子。我修改了一下,因为该网站使用一个单击事件处理程序,因为我想使用两个单击事件处理程序。一个用于浏览按钮,另一个用于插入数据。以下代码位于插入句柄
中FileStream fs = new FileStream("@Photo", FileMode.Open, FileAccess.Read);
byte[] data = new byte[fs.Length];
fs.Read(data, 0, System.Convert.ToInt32(fs.Length));
nonqueryCommand.Parameters.AddWithValue("@Photo", data);
以上代码给我一个错误......
无法找到文件'C:.... \ bin \ Debug \ @Photo'。
我认为这给了我错误,因为我没有使用相同方法的开放式对话框编码。
如果有人可以帮助我,请提前致谢。
更新1a
这将花费我很少的时间来掌握,所以我会离开。我将从那些帮助过的人那里得到建议。感谢
答案 0 :(得分:2)
您缺少带参数
的@
cmd.Parameters.Add(new SqlParameter("@Photo", imgByteArr));
////^^^^ here
答案 1 :(得分:1)
nonqueryCommand.Parameters.AddWithValue("@Photo", DBNull.Value);
更改为
nonqueryCommand.Parameters.AddWithValue("Photo", DBNull.Value);
还有这个
new FileStream("@Photo", FileMode.Open, FileAccess.Read);
显然是错误的。什么是@Photo?您不能直接将SQL列绑定到C#代码。您需要从数据库中检索值,将其存储在某个变量中,然后才能使用它。否则,此代码只是尝试查找名为@Photo的文件,这会导致异常,如您所见。