2017-12-29 15 views
-1

Ich habe eine Textbox mit TextChanged Ereignis funktioniert sehr gut, wenn ich die richtige ID eingeben. Aber wenn ich eine falsche ID gebe und die MessageBox im Fangabschnitt erscheint, und dann versuche ich eine korrekte ID einzugeben, gibt es mir den MessageBox Fehler.Textbox mit TextChanged-Ereignis bringt das Datum nicht in Sekunde

Hier ist mein Code:

private void Pro1txt_onChange(object sender, EventArgs e) 
{ 
    try 
    { 
     cmd1 = new SqlCommand(" SELECT P_Name,P_Price,P_Quantity from Product where P_ID = '" + Pro1txt.Text + "'", cn); 
     cn.Open(); 
     DataReader = cmd1.ExecuteReader(); 
     DataReader.Read(); 
     ProdcutName1.Text = DataReader["P_Name"].ToString(); 
     UnitPrice1.Text = DataReader["P_Price"].ToString(); 
     Rem_Quantity1.Text = DataReader["P_Quantity"].ToString(); 

     if (Rem_Quantity1.Text =="0") 
     { 
      Req_Quantity1.Enabled = false; 
     }    
    } 
    catch 
    { 
     MessageBox.Show("Error","danget",MessageBoxButtons.OK,MessageBoxIcon.Hand);    
    } 
} 

Antwort

2

Ihre Abfrage ist anfällig für SQL Injection. Sie sollten Parameters

Zum Beispiel verwenden:

cmd1 = new SqlCommand(" SELECT P_Name,P_Price,P_Quantity from Product where P_ID = @id", cn); 
cmd1.Parameters.Clear(); 
cmd1.Parameters.Add("@id", SqlDbType.Int).Value = int.Parse(Pro1txt.Text); 
cn.Open(); 
.... 

und versuchen, nicht messagebox in Ihrem Catch-Block enthalten .. verwenden schließlich Ihre DB-Verbindung zu schließen.

Suche nach Abfrage mit Parametern für weitere Informationen.

+0

Vielen Dank, Budy. – AzzaM

+0

Kleine Quation Ich möchte, dass die Spalten in der Tabelle zu Textfeld kommt, ist Ihre Art und Weise funktioniert – AzzaM

+0

verwenden Sie einfach Ihre unten Code nach "cn.Open();". – TraxX

0

Das Wichtigste zuerst: Dieser Code ist anfällig für SQL-Injection.

Dann, um eine schnelle Lösung anzubieten: Kein Dialog in einem catch-Block anzeigen. Setzen Sie ein globales Flag, um den Status Ihrer Anwendung anzugeben. Verwenden Sie dann dieses Flag, um Ihre Nachricht anzuzeigen oder nicht.

+0

mehr erklären, mein Freund Ich verstehe dich nicht. – AzzaM

+0

So vermeiden Sie SQL-Injektion in den obigen Code. – AzzaM

Verwandte Themen