繁体   English   中英

在asp.net类文件中执行的sql命令中的致命错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM