2011-02-23 5 views
0

現在、MySQLとC#を使用してWindows用アプリケーションを開発中です。私は何も今までにデータベースから返されなかったかのようにwhileループに入ることはありませんコードをデバッグするいくつかの理由C#でMySQLParametersを使用したMySQLクエリ

private void cboCategories_SelectedIndexChanged(object sender, EventArgs e) 
      { 
       DatabaseWork dbase = new DatabaseWork(); 
       try 
       { 
        dbase.openConnection(); 
        string query = "SELECT * FROM budgetcategory WHERE [email protected] AND [email protected]"; 
        MySqlCommand cmd = new MySqlCommand("", dbase.conn); 

        cmd.CommandText = query; 
        cmd.Parameters.AddWithValue("@userID", userID); 
        cmd.Parameters.AddWithValue("@category", cboCategories.SelectedItem.ToString()); 

        MySqlDataReader reader = cmd.ExecuteReader(); 
        while (reader.Read()) 
        { 
         setCatId(reader.GetString("budc_category_id")); 
         Console.WriteLine("Category ID: " + getCatId()); 
        } 
       } 
       catch (MySqlException ex) 
       { 
        Console.WriteLine("Cat Error: " + ex.Message); 
       } 
       finally 
       { 
        dbase.closeConnection(); 
       } 
} 

:私は、次のコードを持っています。しかし、そこに何かがあるはずです。あなたはちょうどあなたが少しのデバッグを支援しようと

答えて

0

を提供することができる任意の助けを

ありがとう:

string query = "SELECT * FROM budgetcategory WHERE [email protected] AND [email protected]"; 
MySqlCommand cmd = new MySqlCommand("", dbase.conn); 
cmd.CommandText = query; 

だけに:

string query = "SELECT * FROM budgetcategory WHERE [email protected] AND [email protected]"; 
MySqlCommand cmd = new MySqlCommand(query, dbase.conn); 

は、これら3行を減らしてみてください

ここで、パラメータを追加する行にブレークポイントを置き、userID、特にcboCategories.SelectedItem.ToString()には、期待する値があります。

また例外がスローされないことを確認できますか?

これが当てはまらない場合、それらの正確な値をデータベースに対して直接実行し、何かが返されることを確認します。

+0

こんにちは、あなたの提案に感謝します。 cboCategoriesは正しい値で戻ってきます。例外はスローされません。奇妙なことは、たとえそれがまだwhileループに入ることがないパラメータの値をハードコードしたとしてもです。また、私はパラメータを使用せず、クエリ文字列に変数を直接置くとうまくいきます。その唯一のMySQLパラメータは動作しません – Boardy

関連する問題