我遇到了 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;
只是想感谢
@Bradley Grainger
的评论。
这是我的问题的正确解决方案。
您可以NOT 在 SQL 中参数化列名称。
再次感谢! <3