2017-03-16 63 views
0

如何用兩個不同的參數構造動態選擇語句。 我的代碼工作正常,但沒有參數,但如果我想在參數中轉換它。如何構建動態@Para語句?

如果我將代碼轉換爲@VehiNo@CustName。 請在代碼中查看評論。

using (SqlConnection conn = new SqlConnection(dbConn)) 
{ 
    if (txtSearchVehicleNo.MaskCompleted) 
    { 
     sqlString = "Select * From Master Where VehiNo = '" + txtSearchVehicleNo.Text + "'"; // here i convert with @VehiNo 
    } 
    else if (!string.IsNullOrWhiteSpace(txtSearchMemberName.Text)) 
    { 
     sqlString = "Select * From Master Where CustName = '" + txtSearchMemberName.Text + "'"; // here i convert with @CustName 
    } 

    using (SqlCommand cmd = new SqlCommand(sqlString, conn)) 
    { 
     cmd.CommandType = CommandType.Text; 
     // How to use following 2 in condition 
     //cmd.Parameters.AddWithValue("@VehiNo", txtSearchVehicleNo.Text); 
     //cmd.Parameters.AddWithValue("@CustName", txtSearchMemberName.Text); 
     conn.Open(); 
     SqlDataReader reader = cmd.ExecuteReader(); 
     dtMember.Load(reader); 
    } 
} 
+0

嘗試到使用''移動陳述if'(CMD的SqlCommand =新的SqlCommand(的SqlString,康涅狄格州))'如果我把 – MonarchL

+0

@MonarchL兩套,如果 - 上面的一個sqlCommand的字符串和其他內部的sqlCommand的'cmd.parameters'然後它的作品,但我必須使用if-else兩次。如果你知道更好的方法? –

回答

0

如何:

using (SqlConnection conn = new SqlConnection(dbConn)) 
{ 

    using (SqlCommand cmd = new SqlCommand()) 
    { 
     string sqlString = string.Empty; 
     if (txtSearchVehicleNo.MaskCompleted) 
     { 
      sqlString = "Select * From Master Where VehiNo = @VehiNo;"; 
      cmd.Parameters.AddWithValue("@VehiNo", txtSearchVehicleNo.Text); 
     } 
     else if (!string.IsNullOrWhiteSpace(txtSearchMemberName.Text)) 
     { 
      sqlString = "Select * From Master Where CustName = @CustName;"; 
      cmd.Parameters.AddWithValue("@CustName", txtSearchMemberName.Text); 
     } 

     cmd.Connection = conn; 
     cmd.CommandText = sqlString; 

     cmd.CommandType = CommandType.Text; 
     conn.Open(); 
     SqlDataReader reader = cmd.ExecuteReader(); 
     dtMember.Load(reader); 
    } 
} 
+0

我已經試過,它給'ExecuteReader:CommandText屬性沒有被初始化'錯誤 –

+0

我做了一些改變。再試一次。 – MonarchL

+0

它正在工作,謝謝。 –