データベースに日付という列が1つあり、データベースの日付列にはこの2013-02-22が含まれていますが、フロントエンドでは2つのajaxdateピッカーを使用してレコードを検索しています。このようにクエリを書いています。正しいかどうか。
SELECT * from table where Date between '" + txtfromdate.Text +"' and '"+txttodate +"'";
データベースに日付という列が1つあり、データベースの日付列にはこの2013-02-22が含まれていますが、フロントエンドでは2つのajaxdateピッカーを使用してレコードを検索しています。このようにクエリを書いています。正しいかどうか。
SELECT * from table where Date between '" + txtfromdate.Text +"' and '"+txttodate +"'";
クエリは正しいですが(適切にフォーマットされた日付値を渡すと仮定)、1回限りのプログラミング演習以外には受け入れられません。
SQLインジェクションを回避するには、パラメータ化されたSQLクエリを使用してください。開始点はSqlCommand.Parametersです。
これは、パラメータを使用するために必要な近似コードです。
SqlCommand command = new SqlCommand(
"SELECT * FROM table WHERE Date BETWEEN @date1 AND @date2", connection);
command.Parameters.AddWithValue("@date1", DateTime.Parse(txtfromdate.Text));
command.Parameters.AddWithValue("@date1", DateTime.Parse(txttodate));
SqlDataReader reader = command.ExecuteReader();