2017-03-16 2 views
0

So erstellen Sie dynamische SELECT-Anweisung mit zwei verschiedenen Parametern. Mein Code funktioniert gut ohne Parameter, aber wenn ich es in Parameter konvertieren möchte.Wie wird die dynamische @Para-Anweisung erstellt?

Wenn ich Code mit @VehiNo und @CustName umwandeln. Bitte überprüfen Sie die Kommentare im Code.

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

Try 'if' Aussage zu bewegen, um' mit (SqlCommand cmd = new SqlCommand (sqlString, anschl)) ' – MonarchL

+0

@MonarchL, wenn ich legte zwei Satz, wenn -else eine über sqlCommand für string und andere innerhalb sqlCommand für 'cmd.parameters' dann funktioniert es, aber ich muss If-else zweimal verwenden. Wenn Sie einen besseren Weg kennen? –

Antwort

0

Wie wäre es damit:

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

Ich habe bereits versucht, es gibt 'ExecuteReader: CommandText Eigenschaft wurde nicht initialisiert' Fehler –

+0

Ich habe einige Änderungen vorgenommen. Versuch es noch einmal. – MonarchL

+0

Es funktioniert, danke. –

Verwandte Themen