2016-09-18 14 views
-1

おはよう!私は何もエラーが起こらないか、MySqlアップデートが機能しません

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(); 

をヒントにそれを実行するたびに、私はUpateは動作しません理由はわからないが、私は、MySQL

にこのコードを実行したときにこれはC#の上の私のコードです ..助けをしてください必要
UPDATE bikerentaldb.tblbikes SET status='Rented',renteddate=NOW(),assignedreturndate=NOW() WHERE bikeID='2'; 

誰かが私を助けることができますか?

+0

を値を送信するためにあなたの入力とパラメータの検証を追加した後に書かれるべきかです。 – Crowcoder

答えて

2

コマンドを実行して何かを実行する必要があります。コードでは、開いている接続の後にSelectCommand.ExecuteNonQuery()行の呼び出しがありません。しかし、この些細なエラーを修正した後は、コマンドテキストを構成するために連結された値に他の問題が発生する可能性があります。ユーザーが無効な日付を入力した場合はどうなりますか? Sql Injection hacksについて聞いたことがありますか?

これはあなたのコードは、それが実際には何も選択しない場合は、コマンド変数の名前を変更を検討してデータベースに

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"); 
} 
関連する問題