[英]fatal error in sql command executing in asp.net class file
我正在尝试从表中获取一些数据。 该查询在mysql上运行良好,但在asp.net c#类文件中执行时却引发异常:sql查询中出现致命错误。内部异常@c未定义。
string sqlQuery = "SET @c:=0;
SELECT * FROM (SELECT TimeStamp, FwdHr, W , @c:=@c+1 as counter
FROM Meter_Data WHERE TimeStamp >= @fromTime AND TimeStamp <= @toTime
AND MeterID = @meterID" + " AND DeviceID = @deviceID) as tmp
WHERE counter % 20 =1 ORDER BY TimeStamp";
那么如何定义@c
呢? 因为它在SQL Server中运行良好
您执行的不是单个查询,而是多个语句。
您在开始时设置的@c
也与用于参数化查询的格式相同。
c#在您发送的参数列表中搜索@c
,由于找不到该参数,因此会出现错误。
您最好在mysql中编写一个例程以获取参数并返回结果。 变量@c
将在例程内部。
您在查询中定义了一个参数,在SQL中C#中没关系,您没有在查询中声明参数而是仅将其传递给它
查看此站点的示例( site )
更好的是,创建一个存储过程并调用它,而不是在代码中编写查询
这样做会更好,因为它将进行预编译并将更少的数据发送到服务器
否则,每次将查询发送到服务器时,它将重新评估并重新编译它们
可以通过简单的查询bcz时间戳为int来完成,并且递增方式为-1902020222、1902020223,...
string sqlQuery = "SELECT TimeStamp, FwdHr, W FROM Meter_Data WHERE TimeStamp >= @fromTime AND TimeStamp <= @toTime AND MeterID = @meterID" +
" AND DeviceID = @deviceID AND TimeStamp%20 = 0 ORDER BY TimeStamp;";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.