Sql 从数据库读取外来字符Winform文本框时出现问题
请帮忙。在Visual Studio 2017和SQLSql 从数据库读取外来字符Winform文本框时出现问题,sql,winforms,Sql,Winforms,请帮忙。在Visual Studio 2017和SQLlocalDB-WinForm学习并制作一个小应用程序。表单(文本框),其中“姓名、姓氏、地址、城市、电话和电子邮件”用捷克语书写,包含“ěšřýýáé”。所有内容都按顺序存储在数据库(nvarchar)中。一切正常 在Form2中,我有另一个表单,Combobox调用一个“姓氏”,它必须从数据库中自动填写电话和电子邮件。如果姓氏没有“ěšššššššššššššŠýššš25“,只显示姓氏,但手机和电子邮件不会加载到文本框中 代码示例(不带
localDB
-WinForm学习并制作一个小应用程序。表单(文本框),其中“姓名、姓氏、地址、城市、电话和电子邮件”用捷克语书写,包含“ěšřýýáé”。所有内容都按顺序存储在数据库(nvarchar
)中。一切正常
在Form2中,我有另一个表单,Combobox调用一个“姓氏”,它必须从数据库中自动填写电话和电子邮件。如果姓氏没有“ěšššššššššššššŠýššš25“,只显示姓氏,但手机和电子邮件不会加载到文本框中
代码示例(不带ěšřýýáíé)可以完美地工作:
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\newtest.mdf;Integrated Security=True");
string sql = "select * from test111 WHERE firmadat ='" + prijmeniComboBox.Text + "'; ";
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataReader myreader;
try
{
con.Open();
myreader = cmd.ExecuteReader();
while (myreader.Read())
{
string rollno = myreader.GetInt32(0).ToString();
string name = myreader.GetString(1);
string telephone = myreader.GetString(3);
string email = myreader.GetString(4);
textBox1.Text = rollno;
telefonTextBox.Text = telephone;
emailTextBox.Text = email;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
谢谢您的帮助。问题可能在这里:
string sql = "select * from test111 WHERE firmadat ='" + prijmeniComboBox.Text + "'; ";
在这里,您使用Unicode字符串并将其连接到一个不是Unicode字符串的SQL字符串中。我会告诉您如何让它按照您的预期工作,但是这是一种非常危险的编写SQLs的方法。并使黑客能够下载vtech设备拍摄的数百万儿童图像。如果我的一个开发人员像这样编写SQL,他们将受到纪律处分,可能会被解雇
我强烈建议您使用参数化SQL;任何数量的互联网资源都将向您展示如何使用,例如-它还将解决使用包含非ASCII字符的搜索词进行搜索时无法获得结果的问题
看一看,;使用dapper不仅可以为您进行参数化,还可以通过将代码减少到几行来简化数据库的工作,例如:
using(SqlCommand x = new SqlCommand(conn)
{
var p = x.Query(
"select * from test111 WHERE firmadat = @a",
new { a = prijmeniComboBox.Text }
);
firstNameTextBox.Text = p.FirstName; //or what the column is called on db
...
}
您只需编写sql,使用@namedParameter占位符,并提供一个匿名对象,其属性以占位符命名。其余的都是整洁的。如果你的项目中有一个Person类,你甚至可以让dapper为你创建并填充它请测试你的代码 国籍字符
string sql=“从test111中选择*,其中firmadat=”N“+prijmeniComboBox.Text+”代码>谢谢所有试图帮助的人。我尝试了下面的代码,效果很好!string sql=“select*from xxxtxxx,其中xxxdat类似于N“%”+firmaComboBox.SelectedItem.ToString()+“%”;是的,谢谢。我使用了一些东西,它可以工作:string sql=“select*from xxxtxxx,其中xxxdat类似于N“%”+firmaComboBox.SelectedItem.ToString()+“%”;