0
string queryStr = "SELECT * from Task_Report_Table where convert(varchar, date, 105) between '" + txtStartDate.Text.ToString() + "' and '" + txtEndDate.Text.ToString() + "'  ";

これは、データベースから値を取得するために使用しているクエリです。

データベーステーブルTask_Report_Tableには、日付、名前、タスク、および時間の列があります。

開始日と終了日を含む UI があります。UI で日付を指定します。上記のメンション クエリでは、レコードを表示する必要があります。

Iam Giving Start date 07-07-2012 と end date as 12-07-2012.It は、07-07-2012 と 12-07-2012 の間の値を表示します。月のレコードと次の年と前の年のレコードもデータベースにレコードが存在する場合。

Prob は日のみを検証しますが、月と年は検証しません。日、月、年、UI でどの iam Giving を検証する必要があります。

4

3 に答える 3

3

この種のコードを使用してサイトを (SQL インジェクションで) ハッキングするのはとても簡単です。

これを試して:

SELECT * from Task_Report_Table where date between @startdate and @enddate

そして、次のように、使用している に startdate と enddate を追加SqlParameterSqlCommandます。

SqlCommand command = new SqlCommand(yourSQL, connection);
command.Parameters.Add(new SqlParameter("startdate", DateTime.Parse(txtStartDate.Text)));
command.Parameters.Add(new SqlParameter("enddate", DateTime.Parse(txtEndDate.Text)));
于 2012-07-27T09:13:57.797 に答える
1

Prob は日のみを検証しますが、月と年は検証しません。日、月、年を検証する必要があります

これにより、日付ではなく、convert(varchar, date, 105)このような文字列が得られます27-07-2012。したがって、クエリは日付ではなく文字列を比較します。

@SteenTで提案されている日付パラメーターを使用します。

于 2012-07-27T09:20:06.530 に答える
0

このようにして、テキストボックスに2つの変数を入れてください..

txtStatrdate.text=strdate;

txtEndDate.text=enddate  ; 

CONVERT(VARCHAR(10),date,101) BETWEEN CONVERT(DATETIME,strdate,101) AND
        CONVERT(DATETIME,enddate,101)
于 2012-07-27T09:22:51.613 に答える