如何解决C#,ASP.NET核心| SqlException:关键字“ TOP”附近的语法不正确
我正在ASP.NET Core中尝试从小型数据库中获取数据。 我想从表中选择2个随机行,但无法正常工作。
我的数据库表:
我发现错误是因为我的sqlCommand
不正确,但我不知道如何使其正确。
我的DAL:
public IEnumerable<IKarakter> GetSortedKarakters()
{
using (sqlConnection connection = GetConnection())
{
connection.open();
var command = new sqlCommand("SELECT * FROM Karakter ORDER BY RAND() LIMIT 2;",connection);
var reader = command.ExecuteReader();
var sortedKarakters = new List<IKarakter>();
while (reader.Read())
{
var karakter = new KarakterDTO
{
KarakterId = (int)reader["KarakterId"],KarakterSoort = reader["KarakterSoort"]?.ToString(),KarakterNaam = reader["KarakterNaam"]?.ToString()
};
sortedKarakters.Add(karakter);
}
return sortedKarakters;
}
}
我尝试过的查询:
-
SELECT * FROM Karatker ORDER BY RAND() LIMIT 10;
-
SELECT * FROM Karakter ORDER BY RAND() TOP 2;
-
SELECT * FROM Karakter TOP 2;
-
SELECT * FROM Karakter Limit 2;
-
SELECT TOP 2 * FROM Karakter ODER BY RAND();
-
SELECT TOP 2 FROM Karakter ODER BY RAND();
有人可以帮忙吗?
编辑:当我尝试此查询时:
SELECT TOP 2 *
FROM dbo.Karakter;
它显示数据库的前2条记录,这证明该错误不是其他层的问题,唯一的问题是查询本身。
解决方法
正确的查询是:
SELECT TOP 2 *
FROM Karakter
ORDER BY NEWID();
在以下站点上找到它:https://www.petefreitag.com/item/466.cfm
,您可以使用SELECT TOP 2 * FROM Karakter ORDER BY ID ;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。