C# MySQL 错误:MySql.Data.MySqlClient.MySqlException (0x80004005):预期数据包结束

问题描述 投票:0回答:1

我遇到了 MySQL 和 C# Web 应用程序最奇怪的问题...

每当我调用此方法而不

PrepareAsync()
时,它都会完美地返回我的数据。

但是,当我do使用

PrepareAsync()
方法时,它给了我一个MySQL异常:

MySql.Data.MySqlClient.MySqlException(0x80004005):预计结束 数据包

public async Task Test()
{
    using MySqlConnection conn = new MySqlConnection(connection);
    conn.Open();
    MySqlCommand cmd = new MySqlCommand("SELECT * FROM characters WHERE deleted=0 ORDER BY @columnName DESC", conn);
    await cmd.PrepareAsync(); // <--------------- HERE
    cmd.Parameters.AddWithValue("@columnName", "alchemyXP");
    using var reader = await cmd.ExecuteReaderAsync();

    while (await reader.ReadAsync())
    {
        var v = reader["alchemyXP"];
        var vv = reader["name"];
    }
}

我的MySQL服务器版本是:8.0.32

我的MySQL服务器+所有表都是字符集:utf8mb4

我的 MySQL.Data NuGet 包是:8.3.0

我的应用程序中的 MySQL 连接字符串是:

服务器=10.0.0.12;uid=test123;pwd=pass123;数据库=testdb123;CharSet=utf8mb4;

c# mysql
1个回答
0
投票

只是想感谢

@Bradley Grainger
的评论。 这是我的问题的正确解决方案。 您可以NOT 在 SQL 中参数化列名称。 再次感谢! <3

© www.soinside.com 2019 - 2024. All rights reserved.