2013-08-24 74 views
0

我希望有一个命令,如果我输入任何内容或空值不会使用C#和SQL Server执行我插入command.Im。我的代码是这样的:如何在这种情况下创建if else语句?

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(); 
+0

Nothing或空值,对于这个参数的? – Nilesh

+0

我想在学生证,名字和姓氏。 –

+1

在我的微薄认为,部分[关注点分离(http://en.wikipedia.org/wiki/Separation_of_concerns)需要在你的代码 –

回答

0

可以在表中产生约束,当你可以尝试插入空值,并在你的程序,你可以得到异常。

另一种方法是做一个循环,并检查所有值PARAMATERS上cmd.Parameters,如果你发现了一个空,没有或空白,你应该插入不发送到数据库。

0

你可以检查,如果你想避免串下面

if(!string.IsNullOrEmpty(TextBox1.Text) && !string.IsNullOrEmpty(TextBox2.Text) && !string.IsNullOrEmpty(TextBox3.Text)) 
{ 
    // your code 

} 

只具有象" "空间可以使用string.IsNullOrWhiteSpace方法(在.NET 4.0 +可用)

+0

注:IsNullOrWhiteSpace仅在微软提供的.NET 4.0 – VhsPiceros

0

参数是一个集合。要检查是否存在它的价值是零:

if (cmd.Parameters.Contains(System.DBNull.Value)) 
{ 
    // A parameter has a null value 
} 
+0

它有一个错误。错误说“SQlParameter集合只接受非空的SQLparamter类型对象,而不是DBNull对象 –

0

由于Damith建议你可以使用string.IsNullOrWhiteSpace或编写验证在文本框中的数据单独验证功能。

bool Validate() 
    { 
     if (!string.IsNullOrWhiteSpace(TextBox1.Text) && !string.IsNullOrWhiteSpace(TextBox2.Text)) // For textboxes that need validation 
     { 
      return true; 
     } 
     return false; 
    } 

而不是使用这些如果else语句看看Contracts.