C#,ASP.NET 核心 | SqlException: 关键字 'TOP' 附近的语法不正确
C#, ASP.NET core | SqlException: Incorrect syntax near the keyword 'TOP'
我在 ASP.NET Core 中尝试从我的小型数据库中获取数据。
我想从我的 table 中 select 2 个随机行,但我无法让它工作。
我的数据库table:
我想错了,因为我的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 ID ;
正确的查询是:
SELECT TOP 2 *
FROM Karakter
ORDER BY NEWID();
在这个网站上找到它:https://www.petefreitag.com/item/466.cfm
我在 ASP.NET Core 中尝试从我的小型数据库中获取数据。 我想从我的 table 中 select 2 个随机行,但我无法让它工作。
我的数据库table:
我想错了,因为我的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 ID ;
正确的查询是:
SELECT TOP 2 *
FROM Karakter
ORDER BY NEWID();
在这个网站上找到它:https://www.petefreitag.com/item/466.cfm