C# ASP.NET与SQL Server中,将空值插入数据库表中的问题?

通过添加页面向数据库中插入记录。是用存储过程实现的,表中的字段有的是不能为空的,我在添加页面的textbox中填写数据时,当我把所有的textbox都填上数据后,点击添加... 通过添加页面向数据库中插入记录。是用存储过程实现的,表中的字段有的是不能为空的,我在添加页面的textbox中填写数据时,当我把所有的textbox都填上数据后,点击添加按钮,能顺利的让数据添加到数据库表中;当有的textbox不填数据时(这些textbox代表的字段在数据库中是可为空的),再点击添加按钮后,就会出现错误提示:输入字符串的格式不正确。那位大侠能帮帮忙解决一下,谢谢了先!
下面是我的存储过程和添加代码:
存储过程:
CREATE PROCEDURE addqingmian
@pname varchar(50),@pdate datetime,@wweight float(8),@dweight float(8),@huichao float(8),@mweight float(8),@jweight float(8),@clong float(8),@slong float(8),
@shenchang float(8),@lspeed float(8),@fspeed float(8)
as insert into qingmian
(pname,pdate,wweight,dweight,huichao,mweight,jweight,clong,slong,shenchang,lspeed,fspeed)
values
(@pname,@pdate,@wweight,@dweight,@huichao,@mweight,@jweight,@clong,@slong,@shenchang,@lspeed,@fspeed)
GO
添加代码:
private void btok_Click(object sender, System.EventArgs e)
{
if(Page.IsValid)
{
SqlCommand cm=new SqlCommand("addqingmian",cn);
cm.CommandType=CommandType.StoredProcedure;
cm.Parameters.Add(new SqlParameter("@pname",SqlDbType.VarChar,50));
cm.Parameters.Add(new SqlParameter("@pdate",SqlDbType.DateTime,8));
cm.Parameters.Add(new SqlParameter("@wweight",SqlDbType.Float,8));
cm.Parameters.Add(new SqlParameter("@dweight",SqlDbType.Float,8));
cm.Parameters.Add(new SqlParameter("@huichao",SqlDbType.Float,8));
cm.Parameters.Add(new SqlParameter("@mweight",SqlDbType.Float,8));
cm.Parameters.Add(new SqlParameter("@jweight",SqlDbType.Float,8));
cm.Parameters.Add(new SqlParameter("@clong",SqlDbType.Float,8));
cm.Parameters.Add(new SqlParameter("@slong",SqlDbType.Float,8));
cm.Parameters.Add(new SqlParameter("@shenchang",SqlDbType.Float,8));
cm.Parameters.Add(new SqlParameter("@lspeed",SqlDbType.Float,8));
cm.Parameters.Add(new SqlParameter("@fspeed",SqlDbType.Float,8));
cm.Parameters["@pname"].Value=tbname.Text;
cm.Parameters["@pdate"].Value=tbdate.Text;
cm.Parameters["@wweight"].Value=tbwweight.Text;
cm.Parameters["@dweight"].Value=tbdweight.Text;
cm.Parameters["@huichao"].Value=tbhuichao.Text;
cm.Parameters["@mweight"].Value=tbmzh.Text;
cm.Parameters["@jweight"].Value=tbjzh.Text;
cm.Parameters["@clong"].Value=tbclong.Text;
cm.Parameters["@slong"].Value=tbslong.Text;
cm.Parameters["@shenchang"].Value=tbshch.Text;
cm.Parameters["@lspeed"].Value=tblspeed.Text;
cm.Parameters["@fspeed"].Value=tbfspeed.Text;
cm.Connection.Open();
try
{
cm.ExecuteNonQuery();
lblnote.Text="添加成功";
}
catch(SqlException ex)
{ throw ex;
}
cm.Connection.Close();
}

}
展开
 我来答
NotigerKuiKui
2012-02-12 · TA获得超过2802个赞
知道大有可为答主
回答量:1592
采纳率:76%
帮助的人:457万
展开全部
因为你在前面参数指定了参数类型,所以在后面必然会进行数据类型的检查,解决办法是先判断文本框是否是=“”;如果是就用DbNull.Value来赋值
还有一个东西就是Parameters.add这个方法,这个方法是要求指定类型的,还有一个好像是addbyvalue,这个不要求指定类型,你可以试试
百度网友c125c4a
2012-02-11
知道答主
回答量:49
采纳率:0%
帮助的人:21.6万
展开全部
数据库字段要是要求不能为空的话,你可以在参数传递前进行一下非空判断,如果为空插入"null"字符串。不知道这样行不行……期待高手
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yao14yao14
2012-02-12 · TA获得超过2612个赞
知道小有建树答主
回答量:959
采纳率:50%
帮助的人:327万
展开全部
DbNull.Value
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式