0

データ リーダーを使用して、特定の列データをグリッド ビューに表示しています。実際には、テーブルから最終日のレコードを取得したいと考えています。

 DateTime yestarday = DateTime.Today.AddDays(-1);
            string query = "select NAME,CLOSING_READING,RATE  from CASHSALE_DETAIL where DATE = '" + yestarday + "'";
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = Conn;
            cmd.CommandText = query;
            SqlDataReader dr = cmd.ExecuteReader();

            while (dr.Read())
            {
                CashSaleVoucherGridView.Rows.Add(num, "", dr["NAME"].ToString(), dr["CLOSING_READING"].ToString(), "", "", "", dr["RATE"].ToString());
                num++;
            }

上記のクエリ データ リーダーでは、0 レコードが返されます。何か提案はありますか????

4

3 に答える 3

0

最初に選択クエリがレコードを返すかどうかを確認してから、dr.HasRowsを追加して、データリーダーが行を返すかどうかを確認します

DateTime yesterday = DateTime.Today.AddDays(-1);
string query = "select NAME,CLOSING_READING,RATE  from CASHSALE_DETAIL where DATE = @date";
SqlCommand cmd = new SqlCommand();
cmd.Connection = Conn;
cmd.CommandText = query;
cmd.Parameters.AddWithValue("@date", yesterday );
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
     while (dr.Read())
            {
                CashSaleVoucherGridView.Rows.Add(num, "", dr["NAME"].ToString(), dr["CLOSING_READING"].ToString(), "", "", "", dr["RATE"].ToString());
                num++;
            }
}
else
{
//Throw error ("No rows found.");
}

よろしくお願いします

于 2012-12-27T09:42:28.137 に答える
0

このように日付フィールドをフォーマットできます

string query = "select NAME,CLOSING_READING,RATE  from CASHSALE_DETAIL
where convert(varchar(15),DATE,101)= '" + yestarday + "'";

しかし、以下のような @BizApps と @mdcuesta によって言及された方法は、非常に誤りが少ないです。

cmd.Parameters.AddWithValue("@yesterday", yesterday);
于 2012-12-27T10:47:22.290 に答える