我得到这个错误...必须声明标量变量
必须声明标量变量“@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服务器:列名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 \调试\ @Photo ”。
我想这给了我错误,因为我没有使用开放对话框编码相同的方法。
如果有人可以帮助我,请提前致谢。
更新1A
这将需要一点时间让我掌握,所以我会离开。我会接受那些帮助过的人的建议。由于
'ntext','text'和'image'数据类型的缺失
@
将在SQL Server的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前正在使用它们的应用程序。改为使用'nvarchar(max)','varchar(max)'和'varbinary(max)'。 [在此处查看详细信息](http://msdn.microsoft.com/en-us/library/ms187993.aspx) –@marc_s - 我已在本网站上看到您提到的任何评论。建议使用varchar(max)和varbinary(max)来代替图像。所以我会谷歌,如果有例子。谢谢你让我知道 – bucketblast
代替'image' - 使用'varbinary(max)'(不是'varchar(max)' - 这是文本数据) –