入力が表示されていない場合は、parameterized SQLをC#で使用するか、DATETIME
パラメータを受け入れるストアドプロシージャを作成することをお勧めします。簡単に言えば、ハードコードされたSQLクエリを使用するべきではありません。それらは攻撃されやすく、SQLで最適化されません。
これを行う簡単な方法は、Dapper.NET object mapperを使用することです。 SQLで
は、あなたができる:
CREATE PROCEDURE return_led_for_dates
@startdate DATETIME,
@enddate DATETIME
AS
BEGIN
SELECT
[LedId],
[LedName]
FROM
[Ledger]
WHERE
Date BETWEEN @Startdate AND @Enddate
END
そしてDapperのでは、あなたのC#は、次のようになります。
DateTime startdate = Convert.ToDateTime(metroLabel8.Text);
DateTime enddate = Convert.ToDateTime(metroLabel9.Text);
var LED = this.Connection.Query<LED>(
"return_led_for_dates",
new {
StartDate = startdate,
EndDate = enddate
},
commandType: CommandType.StoredProcedure);
あなたはあまりにもLEDクラスが必要になります
public class LED
{
int LedId {get; set;},
string LedName {get; set;}
}
最後に、これはテキストフィールドの変換に問題がないと仮定して、DateTime.TryParse
を使用する必要があります。コードを書き留めて、フィールドが確実に解析されるようにすることができます。 Like:
DateTime startDate;
DateTime endDate;
if (DateTime.TryParse(Convert.ToDateTime(metroLabel8.Text), out startDate) && DateTime.TryParse(Convert.ToDateTime(metroLabel9.Text), out endDate))
{
// Your data code.
}
このエラーが発生するテキストボックスに値を表示してください。また、コマンドパラメータ – mybirthname
を使用してください。パラメータ化されたSQLを使用してください。このようにSQLに直接値を入れないでください。 –
私は確信していませんが、この質問を見てください。希望することができます - http://stackoverflow.com/questions/5125076/sql-query-to-select-dates-between-two-dates – RandomStranger