【发布时间】:2018-04-23 19:01:18
【问题描述】:
我有 30 个可用于用户输入的文本框和一个提交按钮,该按钮只需要插入带有值的文本框。目前,我有空文本框接收“null”值,但这会将单词“null”插入数据库而不是将其留空。
protected void btnSubmit_Click(object sender, EventArgs e)
{
String conString = @"Data Source=184.168.47.21;Initial Catalog=RecruitPursuit;Persist Security Info=True;User ID=RecruitPursuit;Password=Recruit20!8";
SqlConnection con = new SqlConnection(conString);
//create a command behavior object
String cmdString = "INSERT INTO [Positions]( Sport_ID, Position)" +
"VALUES (@Sport_ID, @Position1), (@Sport_ID, @Position2), (@Sport_ID, @Position3), (@Sport_ID, @Position4), (@Sport_ID, @Position5), (@Sport_ID, @Position6), (@Sport_ID, @Position7), (@Sport_ID, @Position8), (@Sport_ID, @Position9), (@Sport_ID, @Position10), (@Sport_ID, @Position11), (@Sport_ID, @Position12), (@Sport_ID, @Position13), (@Sport_ID, @Position14), (@Sport_ID, @Position15), (@Sport_ID, @Position16), (@Sport_ID, @Position17), (@Sport_ID, @Position18), (@Sport_ID, @Position19), (@Sport_ID, @Position20), (@Sport_ID, @Position21), (@Sport_ID, @Position22), (@Sport_ID, @Position23), (@Sport_ID, @Position24), (@Sport_ID, @Position25), (@Sport_ID, @Position26), (@Sport_ID, @Position27), (@Sport_ID, @Position28), (@Sport_ID, @Position29), (@Sport_ID, @Position30)";
SqlCommand cmd = new SqlCommand(cmdString, con);
//这只是一个使用5个位置的例子。
SqlParameter param0 = new SqlParameter();
param0.ParameterName = "@Sport_Id";
param0.Value = Session["SportID"];
cmd.Parameters.Add(param0);
SqlParameter param1 = new SqlParameter();
param1.ParameterName = "@Position1";
param1.Value = TextBoxOpt1.Text;
cmd.Parameters.Add(param1);
SqlParameter param2 = new SqlParameter();
param2.ParameterName = "@Position2";
if (TextBoxOpt2.Text != String.Empty)
{
param2.Value = TextBoxOpt2.Text;
}
if (TextBoxOpt2.Text == String.Empty)
{
param2.Value = "null";
//cmd.Parameters.AddWithValue("@Position2", param2==null ? (object)DBNull.Value : param2);
}
cmd.Parameters.Add(param2);
SqlParameter param3 = new SqlParameter();
param3.ParameterName = "@Position3";
if (TextBoxOpt3.Text != String.Empty)
{
param3.Value = TextBoxOpt3.Text;
}
if (TextBoxOpt3.Text == String.Empty)
{
param3.Value = "null";
}
cmd.Parameters.Add(param3);
SqlParameter param4 = new SqlParameter();
param4.ParameterName = "@Position4";
param4.Value = TextBoxOpt4.Text;
if (TextBoxOpt4.Text != String.Empty)
{
param4.Value = TextBoxOpt4.Text;
}
if (TextBoxOpt4.Text == String.Empty)
{
param4.Value = "null";
}
cmd.Parameters.Add(param4);
SqlParameter param5 = new SqlParameter();
param5.ParameterName = "@Position5";
param5.Value = TextBoxOpt5.Text;
if (TextBoxOpt5.Text != String.Empty)
{
param5.Value = TextBoxOpt5.Text;
}
if (TextBoxOpt5.Text == String.Empty)
{
param5.Value = "null";
}
cmd.Parameters.Add(param5);
}
【问题讨论】:
-
这有什么问题?如果它们为空,则 DB 中应为 null?
-
如果我只插入一个值,其他29个用“null”这个词填满数据库
-
这不是问题,除非您的架构设计不当导致冗余。对于小型应用程序/数据库,这应该不是问题。
标签: asp.net