唉,真的是老了,昨天碰到的一个问题解决了之后,今天又碰到时又忘了昨天是怎么解决的了,所以写一写博客,帮助记忆而已。
一、问题:
编写插入数据到数据库代码时,出现这个问题:
System.Data.SqlClient.SqlException: 必须声明变量 '@ImageUrl'。
DAL代码大概是这样的:
public int Insert(xxx.BOL.xxx bo)
{
...
//参数
List<SqlParameter> paras = new List<SqlParameter>();
if (!string.IsNullOrEmpty(bo.属性)) paras.Add(new SqlParameter("@属性名", bo.属性名));
...
}
二、原因:
傻了!若bo.属性真为空时,参数“@属性名”岂不没有添加到命令的参数数组中去?!当然就会了出现“必须声明变量'@属性名'”的广告了。
三、解决:
改成:
SqlParameter para_xxx = new SqlParameter("@属性名",SqlDbType.VarChar,50);
if (!string.IsNullOrEmpty(bo.属性名)) para_imageurl.Value = bo.属性名;
paras.Add(para_xxx);