关于sql语句如何传递null参数的问题

henry2002 2003-06-06 09:17:04
我用c#写了一个向数据库写记录的语句,如下:
string sql;

sql = "INSERT INTO AA(SysNo, AAA, BBB) " +
"VALUES (@SysNo, @AAA, @BBB)";

SqlParameter[] parameters = {
new SqlParameter("@SysNo", SqlDbType.Int),
new SqlParameter("@AAA", SqlDbType.Int),
new SqlParameter("@BBB", SqlDbType.NVarChar, 40)
};

parameters[0].Value = 1;
//当变量var小于零时字段AAA的值设置为空
if( var > 0 ) parameters[1].Value = var;
parameters[2].Value = "AAAAA";

cmd.ExecuteNonQuery(sql, parameters);

现在的问题是如果var等于0,系统会提示参数@AAA没有赋值,但我想让字段AAA为空,不知有什么方法?
...全文
290 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lufly2000 2003-06-12
  • 打赏
  • 举报
回复
gz
henry2002 2003-06-12
  • 打赏
  • 举报
回复
谢谢各位,我现在是用xhan2000(popeye.net) 的方法解决的,原先对DBNull的真正含义不清楚,现在终于知道它是干什么的了
jerryfangsh 2003-06-06
  • 打赏
  • 举报
回复
parameters[1].set_IsNullable(true);
xhan2000 2003-06-06
  • 打赏
  • 举报
回复
parameters[1].Value=DBNull.Value
Knight94 2003-06-06
  • 打赏
  • 举报
回复
Sorry

SqlParameter[] parameters;
if(var>0)
{
sql = "INSERT INTO AA(SysNo, AAA, BBB) " +
"VALUES (@SysNo, @AAA, @BBB)";

parameters =new SqlParameter[]{
new SqlParameter("@SysNo", SqlDbType.Int),
new SqlParameter("@AAA", SqlDbType.Int),
new SqlParameter("@BBB", SqlDbType.NVarChar, 40)
};
parameters[1].Value = var;
parameters[2].Value = "AAAAA";
}
else
{
sql = "INSERT INTO AA(SysNo,BBB) " +
"VALUES (@SysNo, @BBB)";

parameters =new SqlParameter[]{
new SqlParameter("@SysNo", SqlDbType.Int),
new SqlParameter("@BBB", SqlDbType.NVarChar, 40)
};
parameters[1].Value = "AAAAA";
}
parameters[0].Value = 1;
cmd.ExecuteNonQuery(sql, parameters);
Knight94 2003-06-06
  • 打赏
  • 举报
回复
当然不能这样,你应该判断var不大于0的时候,不对为空的字断操作,如下:
SqlParameter[] parameters;
if(var>0)
{
sql = "INSERT INTO AA(SysNo, AAA, BBB) " +
"VALUES (@SysNo, @AAA, @BBB)";

parameters =new SqlParameter[]{
new SqlParameter("@SysNo", SqlDbType.Int),
new SqlParameter("@AAA", SqlDbType.Int),
new SqlParameter("@BBB", SqlDbType.NVarChar, 40)
};
parameters[1].Value = var;
}
else
{
sql = "INSERT INTO AA(SysNo,BBB) " +
"VALUES (@SysNo, @BBB)";

parameters =new SqlParameter[]{
new SqlParameter("@SysNo", SqlDbType.Int),
new SqlParameter("@BBB", SqlDbType.NVarChar, 40)
};
}
parameters[0].Value = 1;
parameters[2].Value = "AAAAA";
cmd.ExecuteNonQuery(sql, parameters);

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧