2016-10-20 20 views
0

Queryに手動でCurrentSystemTimeを追加できません。クエリは文字列変数に格納されます。しかしconcationation部分がエラーを与えている:DateTime文字列を含むクエリのConcat文字列

クエリは次のとおりです。

string myQuery= @"SELECT MAX(ASD.eventDateTime) AS second, R.resourceID,R.resourceLoginID,ASD.agentID 
        FROM AgentStateDetail AS ASD INNER JOIN 
        Resource AS R ON ASD.agentID = R.ResourceID WHERE ASD.eventDateTime >='" + DateTime.Today.ToString("yyyy-MM-dd h:mm:ss") + "'AND ASD.eventDateTime <='2016-10-18 23:59:59' 
        GROUP BY R.ResourceID,R.resourceLoginID,ASD.agentID" 

The Problem part is:

WHERE ASD.eventDateTime >='" + DateTime.Today.ToString("yyyy-MM-dd h:mm:ss") + "'

Error is:

Represent Text as unicode character Newline in constant.

+0

'model-view controller'タグは、ユーザーインターフェイス(入力と表示)からパターンを分離する"ドメインロジック "(ユーザーのアプリケーションロジック)で、それぞれの独立した開発、テスト、懸念事項の)。 SQLクエリではありません。 –

+0

SQLインジェクションに対して脆弱であるため、パフォーマンスが向上し、最先端の状態になるため、プリペアドステートメントを調べる必要があります。 – Andre

+1

@Andre:実際には、この場合、日時の書式設定の結果が固定されているため、SQLインジェクションに対して脆弱ではありません。 – Georg

答えて

4

あなたはコンパイラが改行することを修正する理由である@で、文字列の第二の部分を開始するのを忘れ文字が無効です:

string myQuery= @"SELECT MAX(ASD.eventDateTime) AS second, R.resourceID,R.resourceLoginID,ASD.agentID 
        FROM AgentStateDetail AS ASD INNER JOIN 
        Resource AS R ON ASD.agentID = R.ResourceID WHERE ASD.eventDateTime >='" + DateTime.Today.ToString("yyyy-MM-dd h:mm:ss") + @"'AND ASD.eventDateTime <='2016-10-18 23:59:59' 
        GROUP BY R.ResourceID,R.resourceLoginID,ASD.agentID" 
+0

@秒の時間を追加しても、文字列を1文字列オブジェクトとして扱いますか? –

+0

@ BASEERULHASSAN 3つの文字列を1つに連結します。コンパイラの場合、これらはそれぞれ個別に処理されますが、連結によってそれらは1つのオブジェクトに結合されます。 – Georg

+0

ありがとうございます。 –

1

string sql = "SELECT MAX(ASD.eventDateTime) AS second, R.resourceID, R.resourceLoginID, ASD.agentID FROM AgentStateDetail AS ASD INNER JOIN Resource AS R ON ASD.agentID = R.ResourceID WHERE ASD.eventDateTime >= @dateTimeStart AND ASD.eventDateTime <= @dateTimeEnd GROUP BY R.ResourceID,R.resourceLoginID,ASD.agentID"; 

using (SqlConnection connection = new SqlConnection(/* connection info */)) 
using (SqlCommand command = new SqlCommand(sql, connection)) 
{ 
    var dateTimeStart = new SqlParameter("dateTimeStart", SqlDbType.DateTime); 
    dateTimeStart.Value = new DateTime("yyyy-MM-dd h:mm:ss"); 

    var dateTimeEnd = new SqlParameter("dateTimeEnd", SqlDbType.DateTime); 
    dateTimeEnd.Value = new DateTime("yyyy-MM-dd h:mm:ss"); 

    command.Parameters.Add(dateTimeStart); 
    command.Parameters.Add(dateTimeEnd); 
    var results = command.ExecuteReader(); 
} 
関連する問題