2016-07-14 19 views
-4

mache Ich möchte diese Aussage eine parametrisierte Abfrage machen, machte type_id mich verwirrt, wie man es macht.Wie man parametrisierte Abfrage dieses

string type_id="text"; 
updateCommand = string.Format("UPDATE ") + type_id 
    + string.Format("_Table SET Status={0},Seq={1},Cy={2},Ca={3},Iv={4}", bcr, seq, cy, ca, iv) 
    + string.Format("WHERE ASDU = {0} AND IOA = {1}", station, ioa); 
+0

Welchen Fehler bekommen Sie? –

+0

''type_id'' verwirrt mich auch, weil es nicht einmal C# gültig ist. Bitte sagen Sie uns, aus welchen Typen Ihre Variablen und Spalten bestehen und was Sie bisher versucht haben und was nicht. –

+0

Nun, keiner von denen sind wirklich SQL-Parameter, das ist ein String-Format, das nicht die gleichen Ergebnisse .. so können Sie fortsetzen, wie Sie haben und Graben dieses erste String-Format und nur 1 String-Format und eine Reihe von Parametern oder Sie können die richtigen SQL-Parameter anzeigen – BugFinder

Antwort

2

Zunächst einmal machen die SQL lesbar

string type_id = "text"; 
... 
string updateCommand = 
    [email protected]"UPDATE {type_id}_Table 
     SET Status = @prm_Status, 
      Seq = @prm_Seq, 
      Cy = @prm_Cy, 
      Ca = @prm_Ca, 
      Iv = @prm_Iv 
     WHERE ASDU = @prm_ASDU AND 
      IOA = @prm_IOA"; 

Bitte beachten Sie, dass Sie nicht Tabelle Namen parametrisieren kann aber C# 6.0 String Interpolation aushilft; Führen Sie dann das Update selbst aus:

using (SqlConnection conn = new SqlConnection(ConnectionStringHere)) { 
    conn.Open(); 

    using (SqlCommand q = new SqlCommand(updateCommand, conn)) { 
     // AddWithValue: not the best choice, 
     // but I have no idea on 'bcr', 'seq'.. 'ioa' etc. types 
     q.Parameters.AddWithValue("@prm_Status", bcr);  
     q.Parameters.AddWithValue("@prm_Seq", seq); 
     q.Parameters.AddWithValue("@prm_Cy", cy); 
     q.Parameters.AddWithValue("@prm_Ca", ca); 
     q.Parameters.AddWithValue("@prm_Iv", iv); 
     q.Parameters.AddWithValue("@prm_ASDU", station); 
     q.Parameters.AddWithValue("@prm_IOA", ioa); 

     q.ExecuteNonQuery(); 
    } 
    } 
Verwandte Themen