日期:2014-05-17  浏览次数:21068 次

ASP.NET(C#),怎么给SQL数据库插入空值?
本帖最后由 From_TaiWan 于 2013-07-21 16:15:34 编辑
如标题
……
mycomm.Parameters.Add(new SqlParameter("@ChuXianSJ", SqlDbType.SmallDateTime));
mycomm.Parameters["@ChuXianSJ"].Value = ChuXianSJBox.Text.Trim() == "" ? null : ChuXianSJBox.Text.Trim();
……

其中:
ChuXianSJ对应的库字段类型是“时间”,且可以“空”;
ChuXianSJBox.Text.Trim() 里的是用于输入时间的文本框;

当ChuXianSJBox没有值的时候,报错“……@Z' 需要参数 '@ChuXianSJ',但未提供该参数。”
请问以上语句怎么不对,要怎么改?

------解决方案--------------------
不是这么写的,改成
if(ChuXianSJBox.Text.Trim() == "")
{
mycomm.Parameters["@ChuXianSJ"].Value =  DBNull.Value;
}
else
{
mycomm.Parameters["@ChuXianSJ"].Value = ChuXianSJBox.Text.Trim();
}
------解决方案--------------------
 cmd.Parameters.AddWithValue("@ChuXianSJ", ChuXianSJBox.Text.Trim().Equals("") ? (object)DBNull.Value : ChuXianSJBox.Text.Trim());
------解决方案--------------------
引用:
Quote: 引用:

 SqlConnection conn = new SqlConnection("server=.;database=test;uid=sa;pwd=123456");
            conn.Open();
            SqlCommand cmd = new SqlCommand("insert into test(shijian) values(@ChuXianSJ)", conn);
            cmd.Parameters.AddWithValue("@ChuXianSJ", DBNull.Value);
            cmd.ExecuteNonQuery();



恩,这个对的,问题是:客户有时候是要输入时间的,只是有时候不输入,就是个选择,但总是通不过
“ChuXianSJBox.Text.Trim() == "" ? DBNull.Value : ChuXianSJBox.Text.Trim();”这个到底怎么错了


你定义了类型,需要指定value的类型
我先前回复错误,没注意你是datetime类型
(DateTime)DBNull.Value
或者 System.Data.SqlTypes.DateTime.Null应该可以