C# 在这种情况下,如何创建if-else语句?
我想要一个命令,如果我不输入任何内容或空值,它将不会执行我的insert命令。我的代码如下:C# 在这种情况下,如何创建if-else语句?,c#,sql-server-2008,C#,Sql Server 2008,我想要一个命令,如果我不输入任何内容或空值,它将不会执行我的insert命令。我的代码如下: SqlCommand cmd = con.CreateCommand(); cmd.CommandText = "INSERT INTO Records ([Student ID], [First Name], [Last Name], [Middle Initial], Gender, Address, Status,
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "INSERT INTO Records ([Student ID], [First Name],
[Last Name], [Middle Initial], Gender, Address, Status,
Year, Email, Course, [Contact Number])
VALUES ( @StudentID, @FirstName, @LastName ,
@MiddleInitial, @Gender, @Address, @Status, @Year,
@Email, @Course, @ContactNumber)";
SqlParameter p1 = new SqlParameter("@StudentID", SqlDbType.NChar);
p1.Value = textBox1.Text;
cmd.Parameters.Add(p1);
SqlParameter p2 = new SqlParameter("@FirstName", SqlDbType.NVarChar);
p2.Value = textBox2.Text;
cmd.Parameters.Add(p2);
SqlParameter p3 = new SqlParameter("@LastName", SqlDbType.NVarChar);
p3.Value = textBox3.Text;
cmd.Parameters.Add(p3);
SqlParameter p4 = new SqlParameter("@MiddleInitial", SqlDbType.NChar);
p4.Value = comboBox1.Text;
cmd.Parameters.Add(p4);
SqlParameter p5 = new SqlParameter("@Gender", SqlDbType.NChar);
p5.Value = comboBox2.Text;
cmd.Parameters.Add(p5);
SqlParameter p6 = new SqlParameter("@Address", SqlDbType.VarChar);
p6.Value = textBox4.Text;
cmd.Parameters.Add(p6);
SqlParameter p7 = new SqlParameter("@Status", SqlDbType.NChar);
p7.Value = comboBox3.Text;
cmd.Parameters.Add(p7);
SqlParameter p8 = new SqlParameter("@Year", SqlDbType.VarChar);
p8.Value = comboBox4.Text;
cmd.Parameters.Add(p8);
SqlParameter p9 = new SqlParameter("@Email", SqlDbType.VarChar);
p9.Value = textBox5.Text;
cmd.Parameters.Add(p9);
SqlParameter p10 = new SqlParameter("@Course", SqlDbType.VarChar);
p10.Value = comboBox5.Text;
cmd.Parameters.Add(p10);
SqlParameter p11 = new SqlParameter("@ContactNumber", SqlDbType.VarChar);
p11.Value = textBox6.Text;
cmd.Parameters.Add(p11);
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
textBox5.Text = "";
textBox6.Text = "";
comboBox1.Text = "";
comboBox2.Text = "";
comboBox3.Text = "";
comboBox4.Text = "";
comboBox5.Text = "";
MessageBox.Show("Data Inserted!", "Information ... ", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
cmd.ExecuteNonQuery();
con.Close();
您可以在表中生成约束,当您可以尝试插入空值时,您可以在程序中获得异常
另一种选择是在cmd.Parameters上创建一个循环并检查paramaters中的所有值,如果发现一个值为null、nothing或blank,则不应将插入内容发送到数据库。您可以按如下方式进行检查
if(!string.IsNullOrEmpty(TextBox1.Text) && !string.IsNullOrEmpty(TextBox2.Text) && !string.IsNullOrEmpty(TextBox3.Text))
{
// your code
}
如果要避免字符串只包含空格,如
”
,可以使用string.IsNullOrWhiteSpace
方法(在.NET 4.0+上提供)参数是一个集合。要检查其某些值是否为空:
if (cmd.Parameters.Contains(System.DBNull.Value))
{
// A parameter has a null value
}
正如Damith所建议的,您可以使用string.IsNullOrWhiteSpace或编写一个单独的验证函数来验证文本框中的数据
bool Validate()
{
if (!string.IsNullOrWhiteSpace(TextBox1.Text) && !string.IsNullOrWhiteSpace(TextBox2.Text)) // For textboxes that need validation
{
return true;
}
return false;
}
与其使用这些if-else语句,不如看看哪个参数的值为空或为空?我希望在学生id、名字和姓氏中使用它。在我看来,代码中需要一些真正可怕的代码。在执行命令之前清空文本框!如果出了问题怎么办?数据已经丢失。请允许我谦虚地建议您将数据传递给一个具有返回值的存储过程—在存储过程中包含一些错误检查—返回一个值,该值允许您的前端理解发生了什么并相应地处理它。它有一个错误。错误表示“SQlParameter集合只接受非null SQlParameter类型的对象,而不接受DBNull对象注意:IsNullOrWhiteSpace仅在Microsoft.NET 4.0中可用