Concat 字符串与带有 DateTime 字符串的查询
Concat string with a Query with DateTime String
我无法手动将 CurrentSystemTime 添加到我的查询中。查询存储在字符串变量中。但是连接部分给出了错误:
查询是:
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.
您忘记以 @
开始字符串的第二部分,这就是编译器修正换行符无效的原因:
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"
您可以使用如下参数化查询,
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();
}
我无法手动将 CurrentSystemTime 添加到我的查询中。查询存储在字符串变量中。但是连接部分给出了错误:
查询是:
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.
您忘记以 @
开始字符串的第二部分,这就是编译器修正换行符无效的原因:
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"
您可以使用如下参数化查询,
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();
}