您的位置:首页 > 数据库

对于数据库操作可能会遇到的问题(空值问题以及出现的参数不能被重复使用问题)

2016-04-14 16:12 537 查看
初学就碰到如此多的问题,希望有遇到相同问题的少年,可以参考思路解决方案(希望共同进步)

鉴于昨日遇到操作数据库问题比较多,上网百度,才知道原来GC没有及时清除,还会残留在内存中,造成对象指代不明,所以出现错误

解决办法

在SqlHelper中

public static int ExecuteNonQuery(string sql, CommandType cmdType, params SqlParameter[] spm)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = new SqlCommand(sql,conn))
{
cmd.CommandType = cmdType;
cmd.Parameters.Clear();//增加该语句清除参数干扰
cmd.Parameters.AddRange(spm);
conn.Open();
return cmd.ExecuteNonQuery();
}
}
}


对于数据库中字段定义为允许为空时,如果直接传递参数到执行对象中可能会出现如下错误

Additional information: The parameterized query '(@name nvarchar(50),@phone varchar(50),@email varchar(50),@group' expects the parameter '@email', which was not supplied.

出现上述的问题是因为你传递的email字段为空值,而数据库中时不支持将某个字段赋值为空的,即 email=Null;

所以解决办法

就需要你传递参数时加入

SqlParameter spm=new SqlParameter("@email",SqlDbType.VarChar,50){Value=model.Email==null?DBNull.Value:(object)model.Email}


进行空值判断,当传入的是空值时,就将DBNull.value值,空值传进数据库中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: