将空文本字段设为null

时间:2014-07-09 17:00:23

标签: c# asp.net sql

我正在使用多种形式,到目前为止,我已经发现实际上没有办法获取空文本字段并将其作为null插入数据库。

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

<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 ..)

4 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

使用DBNull.Value,它会为行中的特定值提供Null。因此,如果您检查文本框是否为空。只需使用一些东西     !string.IsNullOrWhitespace(tb0.Text)? tb0.Text:DBNull.Value

答案 2 :(得分:0)

如果使用带参数的存储过程,则可以创建参数值DBNull.Value

答案 3 :(得分:0)

您可以更改存储过程吗?如果是这样,您可以将参数设为可选,默认为NULL,而不传递值为IsNullOrEmpty