c#
  • mysql
  • visual-studio-2010
  • 2016-05-01 11 views 0 likes 
    0

    Visual Studio 2010のウィンドウフォームでdateTimePickerに基づいてP_INの総数を表示したいのですが、プログラムがMySQL.Belowからデータを読み取れないエラーが発生しました。MYSQLから読み取ることができません

    cmd = new MySqlCommand("SELECT DATE, P_IN FROM Database.CounterDb WHERE DATE = '" + dateTimePicker1.Text + "'", con); 
             MySqlDataAdapter sdaa = new MySqlDataAdapter(cmd); 
             DataSet dataa = new DataSet(); 
             sdaa.Fill(dataa, "Database.CounterDb"); 
             reader = cmd.ExecuteReader(); 
             int sum = 0; 
             while (reader.Read()) 
             { 
    
              sum = reader.GetInt32(1) + sum; 
    
              } 
              LCounter.Text = sum.ToString(); 
    
    +0

    "Database.CounterDb"はあなたのテーブル名ですか? – CapeStar

    +2

    **警告** ** prepared statements **を使用して、クエリに任意のユーザーデータを挿入しないように注意してください。 [適切にするのは難しくない](http://bobby-tables.com/csharp.html)、[醜い副作用](http://bobby-tables.com/)をたくさん避ける。 – tadman

    +0

    はい、それは私のテーブル名 –

    答えて

    0

    このコードは、クエリを破ったことができ、ユーザ入力、日付のテキストフォーマットができませんでした

    cmd = new MySqlCommand("SELECT DATE, P_IN FROM Database.CounterDb WHERE DATE = '" + dateTimePicker1.Text + "'", con); 
    

    使用していないクエリ に直接ユーザー入力を追加してはならない 、本当に危険です

    DateTime dt = DateTime.ParseExact(dateTimePicker1.Text, "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture); 
        MySqlCommand cmd = new MySqlCommand(); 
        cmd.Connection = con; 
        cmd.CommandText = "SELECT DATE, P_IN FROM Database.CounterDb WHERE DATE = @dt"; 
        cmd.Prepare(); 
        cmd.Parameters.AddWithValue("@dt", dt); 
    

    利用これは(YOURSで日付形式をREPLACE)正しい形式であります

    ELSEたとえば、2016-02-20 00:00:00 - 2016-02-20 23:59:59の範囲で検索する必要がある場合は、この日付のすべてのエントリをクエリする必要があります。

    DateTime dt = DateTime.ParseExact(dateTimePicker1.Text, "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture).Date; 
    DateTime dt1 = dt.AddDays(1); 
    cmd.CommandText = "SELECT DATE, P_IN FROM Database.CounterDb WHERE DATE > @dt and DATE <@dt1"; 
    cmd.Prepare(); 
    cmd.Parameters.AddWithValue("@dt", dt); 
    cmd.Parameters.AddWithValue("@dt1", dt1); 
    
    +0

    エラーはまだ同じです。まだ私はメッセージボックスを使用してチェックしたP_IN –

    +0

    の総数を表示することはできませんプログラムは、プログラムのこの部分を読むことができません、sdaa.Fill(data、 "Database.CounterDb"); reader = cmd.ExecuteReader(); int sum = 0; (reader.Read()) { sum = reader.GetInt32(1)+ sum; } LCounter.Text = sum.ToString(); –

    +0

    ループreader.Read()にデータが見つかりましたか?合計の最終的な価値は何ですか? –

    関連する問題