Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C、 ASP.NET core | SqlException:关键字“TOP”附近的语法不正确_C#_Asp.net_Sql Server_Data Layers - Fatal编程技术网

C# C、 ASP.NET core | SqlException:关键字“TOP”附近的语法不正确

C# C、 ASP.NET core | SqlException:关键字“TOP”附近的语法不正确,c#,asp.net,sql-server,data-layers,C#,Asp.net,Sql Server,Data Layers,我在ASP.NET Core中尝试从我的小数据库中获取数据。 我想从我的表中随机选择2行,但我无法让它工作 我的数据库表: 我计算出错误是因为我的SqlCommand不正确,但我不知道如何使其正确 我的朋友: public IEnumerable<IKarakter> GetSortedKarakters() { using (SqlConnection connection = GetConnection()) { connection.Open()

我在ASP.NET Core中尝试从我的小数据库中获取数据。 我想从我的表中随机选择2行,但我无法让它工作

我的数据库表:

我计算出错误是因为我的SqlCommand不正确,但我不知道如何使其正确

我的朋友:

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;
    }
}
它显示数据库的前2条记录,这证明错误不是来自其他层的问题,唯一的问题是查询本身。

您可以使用SELECT TOP 2*from Karakter ORDER BY ID

您可以使用按ID从卡拉克特订单中选择前2个*

正确的查询是:

SELECT TOP 2 * 
FROM Karakter 
ORDER BY NEWID();
在该网站上找到它:

正确的查询是:

SELECT TOP 2 * 
FROM Karakter 
ORDER BY NEWID();

在该网站上找到它:

当我尝试此操作时,会出现以下错误:SqlException:关键字“BY”附近的语法不正确。当我尝试此操作时,会出现以下错误:SqlException:关键字“BY”附近的语法不正确。您为什么不在选择时查阅??它会清楚地表明1 LIMIT不是一个有效的T-SQL关键字,2正确的语法是SELECT TOP n……你为什么不在SELECT上查询一下呢??它会清楚地表明1 LIMIT不是有效的T-SQL关键字,2正确的语法是SELECT TOP n……在表列中找不到NEWID。在表列中找不到NEWID。