2014-07-09 44 views
0

我正在用几种形式,到目前为止,我已经想通,真的有没有办法把一个空的文本字段并将其插入到数据库中为空。以空文本字段作为空

例如,如果文本字段为空:

<asp:TextBox id="tb0" runat="server"></asp:TextBox> 
<asp:TextBox id="tb1" runat="server"></asp:TextBox> 
<asp:TextBox id="tb2" runat="server"></asp:TextBox> 

但周围

填写文本框是否有任何方式的查询,在运行时,看起来就像这样:

INSERT INTO table_name VALUES ('test0', null, 'test2') 

相反通过具有循环并改变由空格的值的?空白是好的,当他们VARCHAR字段但对于整数/日期这是很烦人的

这里是我的刀片之一的一部分

"INSERT INTO Customer VALUES(" + custID + " , @mastName, @custName, @addrLn1, @addrLn2, @cCity, @cState, @cZip, @cZip4, @cCountry, @cusSince, @renewalDate)" 

BTW CUSTID不是一个参数,因为它是一个浮动和当我如果使用存储过程的参数设置你作为一个参数的值被搞砸了(例如,105.05将变成105.0498 ..)

+0

你能显示代码,你实际上是准备和执行的数据库插入? –

+0

如果您想与参数化查询开始(因为你必须)你会很容易地指定DBNull作为参数类型空列...这已经涵盖在http://stackoverflow.com/questions/16717179/how-to- insert-null-value-in-database-through-parameterized-query –

+0

我更新了OT并更正了我,如果我错了但DBNull看起来像它准备字段为空,这是可选的吗?那是什么?我是新来的C#如此裸露与我..编辑:在阅读一些线程后,我明白你的意思,我会给那一拍 – brianforan

回答

2

你可以使用一个简单的方法是这样的:

object ToDBValue(string str) 
{ 
    return string.IsNullOrEmpty(str) ? DBNull.Value : (object)str; 
} 

然后,你可以建立自己的参数:

command.Parameters.AddWithValue("@VAL1", ToDBValue(tb0.Text)); 
command.Parameters.AddWithValue("@VAL2", ToDBValue(tb1.Text)); 
command.Parameters.AddWithValue("@VAL3", ToDBValue(tb2.Text)); 

,然后改变你的查询:

INSERT INTO table_name VALUES (@VAL1, @VAL2, @VAL3) 
+0

+1。请考虑展示如何创建参数化查询的示例(或者仅为此添加链接到MSDN/SO),因为OP没有。 –

+0

对不起,我有我的实际代码参数化,我更新op – brianforan

+0

@ itsme86这使我的cmd不工作了,当我添加方法 – brianforan

0

你可以做一个paramenter值DBNull.Value

1

使用DBNull.Value,这将给你空在那个特定的值行。所以如果你检查文本框是否为空。只需使用 !string.IsNullOrWhitespace(tb0.Text)? tb0.Text:DBNull.Value

0

你能更改存储过程?如果是这样,您可以使参数可选,默认为NULL,只是不通过它是值IsNullOrEmpty