2016-09-18 3 views
-1

Guten Tag! Ich brauche Hilfe bitte .. Dies ist mein Code auf C#, wenn ich ausführen es nichts keinen Fehler passiert oder andeutenMySql Update funktioniert nicht

string myConnection = " datasource=localhost;port=3306;username=root;password=wolf"; 
     string Query = " UPDATE bikerentaldb.tblbikes SET status='Rented',renteddate=NOW(),assignedreturndate='" + txtToBeReturned.Text + "' WHERE bikeID='" + txtBikeIdRent.Text + "'"; 
     MySqlConnection myConn = new MySqlConnection(myConnection); 
     MySqlCommand SelectCommand = new MySqlCommand(Query, myConn); 
     myConn.Open(); 
     MessageBox.Show("Data Saved"); 
     myConn.Close(); 

Ich bin nicht sicher, warum das Upate wird nicht funktionieren, aber wenn ich diesen Code auf MySql ausführen

UPDATE bikerentaldb.tblbikes SET status='Rented',renteddate=NOW(),assignedreturndate=NOW() WHERE bikeID='2'; 

Es funktioniert gut kann mir jemand helfen?

+0

betrachten Umbenennung der Leitgröße nach dem Hinzufügen Validierung Ihre Eingaben und Parameter geschrieben werden, um Werte zu senden, wenn es nicht wirklich etwas wählen ist. – Crowcoder

Antwort

2

Ein Befehl sollte ausgeführt werden, um irgendetwas zu tun. Ihr Code vermisst den Aufruf von SelectCommand.ExecuteNonQuery() Zeile nach der geöffneten Verbindung. Nach dem Beheben dieses trivialen Fehlers können jedoch andere Probleme mit den Werten auftreten, die zu Ihrem Befehlstext verkettet wurden. Was passiert, wenn der Benutzer ein ungültiges Datum eingibt? Haben Sie jemals von Sql Injection hacks gehört?

Dies ist, wie Ihr Code sollte zu Ihrer Datenbank

int bikeID = 0; 
if(!Int32.TryParse(txtBikeIdRent.Text, out bikeID) 
{ 
    MessageBox.Show("Invalid number"); 
    return; 
} 
DateTime returnDate; 
if(!DateTime.TryParse(txtToBeReturned.Text , out returnDate) 
{ 
    MessageBox.Show("Invalid date"); 
    return; 
} 
string myConnection = "....."; 
string Query = @"UPDATE bikerentaldb.tblbikes 
    SET status='Rented', renteddate=NOW(), 
     [email protected] 
     WHERE [email protected]"; 
using(MySqlConnection myConn = new MySqlConnection(myConnection)) 
using(MySqlCommand cmd = new MySqlCommand(Query, myConn)) 
{ 
    myConn.Open(); 
    cmd.Parameters.Add("@date", MySqlDbType.Date).Value = returnDate; 
    cmd.Parameters.Add("@id", MySqlDbType.Int32).Value = bikeID; 
    int rowUpdated = cmd.ExecuteNonQuery(); 
    if(rowUpdated > 0) 
     MessageBox.Show("Record updated"); 
    else 
     MessageBox.Show("No record match"); 
}