Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL CommandText上的语法不正确_C#_Asp.net_Sql - Fatal编程技术网

C# SQL CommandText上的语法不正确

C# SQL CommandText上的语法不正确,c#,asp.net,sql,C#,Asp.net,Sql,我正在尝试构建一个SQL查询,并将传递一个字符串作为参数。然而,我得到了一个错误的语法错误。我已经打印出了这些值,但对我来说一切都很好 我有一个字符串“sqlString”,它是通过一系列连接构建的,产生如下结果: sqlString = " and (event_id=60 OR event_id=61 OR event_id=56 OR event_id=73)" SqlCommand totalCmd = new SqlCommand(); totalCmd.CommandText =

我正在尝试构建一个SQL查询,并将传递一个字符串作为参数。然而,我得到了一个错误的语法错误。我已经打印出了这些值,但对我来说一切都很好

我有一个字符串“sqlString”,它是通过一系列连接构建的,产生如下结果:

sqlString = " and (event_id=60 OR event_id=61 OR event_id=56 OR event_id=73)"

SqlCommand totalCmd = new SqlCommand();

totalCmd.CommandText = "SELECT sum(datediff(hour,[event_start],[event_end])) as Timeworked FROM event WHERE (event_start >= @StartDate and event_end <= @EndDate) @mySqlString";

totalCmd.Parameters.AddWithValue("StartDate", txtStartDate.Text);
totalCmd.Parameters.AddWithValue("EndDate", txtEndDate.Text);
totalCmd.Parameters.AddWithValue("mySqlString", sqlString);

totalDT = SqlComm.SqlDataTable(totalCmd);
sqlString=“and(event_id=60或event_id=61或event_id=56或event_id=73)”
SqlCommand totalCmd=新的SqlCommand();

totalCmd.CommandText=“选择sum(datediff(hour,[event_start],[event_end])作为从事件开始计算的时间,其中(event_start>=@StartDate和event_end您需要在参数前面加上
@
符号,如下所示:

totalCmd.Parameters.AddWithValue("@StartDate", txtStartDate.Text);
totalCmd.Parameters.AddWithValue("@EndDate", txtEndDate.Text);
totalCmd.Parameters.AddWithValue("@mySqlString", sqlString);
注意:您使用的语法没有找到匹配项,因此没有替换参数值,因此它在查询中传递了
@mySqlString


您需要将
@
符号放在参数前面,如下所示:

totalCmd.Parameters.AddWithValue("@StartDate", txtStartDate.Text);
totalCmd.Parameters.AddWithValue("@EndDate", txtEndDate.Text);
totalCmd.Parameters.AddWithValue("@mySqlString", sqlString);
注意:您使用的语法没有找到匹配项,因此没有替换参数值,因此它在查询中传递了
@mySqlString


不能将
sqlString
添加为参数。应将其直接连接到CommandText:

totalCmd.CommandText = "SELECT sum(datediff(hour,[event_start],[event_end])) as Timeworked FROM event WHERE (event_start >= @StartDate and event_end <= @EndDate) " + sqlString;

totalCmd.CommandText=“选择sum(datediff(hour,[event\u start],[event\u end])作为从事件开始计算的时间,其中(event\u start>=@StartDate and event\u end不能将
sqlString
作为参数添加。应将其直接连接到CommandText:

totalCmd.CommandText = "SELECT sum(datediff(hour,[event_start],[event_end])) as Timeworked FROM event WHERE (event_start >= @StartDate and event_end <= @EndDate) " + sqlString;

totalCmd.CommandText=“选择sum(datediff(hour,[event\u start],[event\u end])作为从事件开始计算的时间,其中(EnviaStase>=StaseDebug和EnvithEnter您尝试注入SQL。参数阻止SQL注入。参数试图阻止SQL注入。谢谢。我没有考虑。现在正在工作。谢谢。我没有考虑。现在正在工作。非常感谢。这不是问题,而是谢谢。谢谢你的留言。我也会把它合并。这不是这里的问题,但谢谢你的留言。我也会把它合并。