2
string queryString = "SELECT SUM(skupaj_kalorij)as Skupaj_Kalorij  "
                + "FROM (obroki_save LEFT JOIN users ON obroki_save.ID_uporabnika=users.ID)"
                + "WHERE (users.ID= " + a.ToString() + ") AND (obroki_save.datum= @datum)";

            using (OleDbCommand cmd = new OleDbCommand(queryString,database))                                    
                {
                    DateTime datum = DateTime.Today;
                    cmd.Parameters.AddWithValue("@datum", datum);
                }
            loadDataGrid2(queryString);

今、パラメータを試してみました。しかし、私はそれを正しく行う方法を本当に知りません。私はこのように試しましたが、パラメーターdatumは値を取得しません(c#による)。

4

3 に答える 3

3

これを試してください:

database = new OleDbConnection(connectionString);
                database.Open();
                date = DateTime.Now.ToShortDateString();
                string queryString = "SELECT SUM(skupaj_kalorij)as Skupaj_Kalorij  "
                    + "FROM (obroki_save LEFT JOIN users ON obroki_save.ID_uporabnika=users.ID)" 
                    + "WHERE users.ID= " + a.ToString()+" AND obroki_save.datum= '" +DateTime.Today.ToShortDateString() + "'";
                loadDataGrid2(queryString);

Dateで使用する場合は、次のように記述する必要があります

select * from table where date = '@date'

みたいではなく

select * from table where date = @date
于 2010-05-20T13:08:54.873 に答える
1

エラーを投稿することは通常は便利ですが、推測を危険にさらし、日付で変換エラーが発生していると言います。

あなたは本当にあなたのクエリをパラメータ化することを見る必要があります...

これを読む必要があります:http ://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/

そして、それを読むのが面倒な場合は、「a」変数を「1」に変更してみてください。DROP TABLE obroki; --'(ただし、データベースをバックアップした後のみ)。

于 2010-05-20T13:09:58.567 に答える
0

おそらく、使用しているデータベースのSQL方言でSQL文字列を記述する必要があります。Jet / ACE SQL(Accessで使用されるもの)では、日付値の区切り文字は#であるため、次のものが必要になります。

  obroki_save.datum= #" +DateTime.Today.ToShortDateString() + "#"

もちろん、一部のデータインターフェイスライブラリはこれらを変換するため、ここでは問題にならない場合があります。

于 2010-05-20T23:41:45.880 に答える