【发布时间】:2020-11-07 13:47:37
【问题描述】:
我在 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上的official Microsoft documentation??它会清楚地表明 (1)LIMIT是 NOT 一个有效的 T-SQL 关键字,并且 (2) 正确的语法是SELECT TOP (n) ......
标签: c# asp.net sql-server data-layers