gpt4 book ai didi

c# - 将字符串从 WPF 保存到 MySQL varchar

转载 作者:行者123 更新时间:2023-11-29 00:13:53 27 4
gpt4 key购买 nike

我有一个 WPF 应用程序可以像这样从文件中读取数据:

foreach (String line in File.ReadAllLines(file, Encoding.UTF8))
{}

然后每一行都被解析并显示在屏幕上,一切正常。一些数据中包含西里尔字母,我用来存储这些数据的字符串也可以在应用程序窗口的屏幕上正常显示。

但是,之后我使用相同的字符串将它们插入到 MySQL 数据库中。我正在构建一个查询并启动它 MySqlCommand cmd = new MySqlCommand(query, conn); 它成功地在数据库中插入了一个包含适当信息的新行。数字都很好,但是所有进入数据库并具有西里尔字母的字符串都显示为 ????????

数据库引擎是 InnoDB 并且表的编码和其中的所有 varchar 字段都是 utf_general_ci 所以知道发生了什么以及如何在数据库中保存正确的字符串?

编辑:根据请求,这里有一些代码。数据库连接:

    conn = new MySqlConnection();
conn.ConnectionString = "//censored//";

以及文件读取/数据库加载,为了这段代码片段的目的而缩短:

foreach (String line in File.ReadAllLines(file, Encoding.UTF8))
{
string[] tokens = line.Split('|');
string query = "INSERT INTO myTable SET first_name = '" + tokens[0] + "'" + ", last_name = '" + tokens[1] + "'";
MessageBox.Show(tokens[0]);
MySqlCommand cmd = new MySqlCommand(query, conn);
cmd.ExecuteNonQuery();
}

消息框按应有的方式显示名称,但进入数据库的是 ????????。

最佳答案

经过一番摸索,我确实弄清楚了问题出在哪里,所以发布了一个答案供所有人查看:

关键部分是您与数据库建立连接的方式:

conn.ConnectionString = @"Server = YOURSERVER; Database = YOURDB; Uid = YOURUSER ; Pwd = 'YOURPASSWORD'; charset=utf8;";

我之前遗漏了 charset=utf8; 部分,所以我假设所有类型的非 utf8 垃圾都会进入数据库,而不管我在联系。希望这对您有所帮助!

关于c# - 将字符串从 WPF 保存到 MySQL varchar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23657082/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com