C# sql命令中的条件为阿拉伯语时,sqldatareader的其他问题
当sql命令中的条件为阿拉伯语时,sqldatareader存在如下问题:C# sql命令中的条件为阿拉伯语时,sqldatareader的其他问题,c#,.net,sql-server,sqldatareader,arabic,C#,.net,Sql Server,Sqldatareader,Arabic,当sql命令中的条件为阿拉伯语时,sqldatareader存在如下问题: select user_name from users where typ=N 'arabic text' 虽然有一个用户名具有此类型,但它不会检索任何数据 你能帮帮我吗? 谢谢^ ^我已经重写了您的代码以使用查询参数。您希望避免像这样将字符串直接放入查询中(无论如何类型都应该规范化)。主函数可能会将一个客户机列表返回到您的表示层,然后该层将负责显示客户机,但我没有走那么远 因为您的查询是在ManagementStud
select user_name from users where typ=N 'arabic text'
虽然有一个用户名具有此类型,但它不会检索任何数据你能帮帮我吗?
谢谢^ ^我已经重写了您的代码以使用查询参数。您希望避免像这样将字符串直接放入查询中(无论如何类型都应该规范化)。主函数可能会将一个客户机列表返回到您的表示层,然后该层将负责显示客户机,但我没有走那么远 因为您的查询是在ManagementStudio中进行的,所以您的数据库排序规则设置应该是正常的
public void ListClientsByType(string clientType)
{
using (IDbConnection conn = new SqlConnection("connectionstring"))
{
IDbCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT nam FROM clients WHERE typ = @type";
cmd.Parameters.Add(
_CreateInputParameter(cmd, DbType.String, "@type", clientType));
conn.Open();
IDataReader dr = null;
try
{
dr = cmd.ExecuteReader();
// Work with results here
}
finally
{
if (dr != null)
dr.Close();
}
}
}
private IDbDataParameter _CreateInputParameter(
IDbCommand cmd, DbType type, string name, object value)
{
IDbDataParameter p = cmd.CreateParameter();
p.DbType = DbType.String;
p.Direction = ParameterDirection.Input;
p.ParameterName = name;
p.Value = value;
return p;
}
(1.)你真的应该使用代码标签(101010按钮)来突出显示你的代码;它使它更容易阅读。(2.)您说用户名是阿拉伯语的,但您的
WHERE
语句使用了typ
列。你确定你的WHERE
语句中的列是正确的吗?我是这个网站的初学者,所以你能帮助我并告诉我如何突出显示我的代码吗?我的意思是有一个用户名是这种类型的,我会编辑它。当你在Management Studio中将它用作SQL时,命令是否有效(或者查询分析器,或者您使用的是哪种SQL工具)?如果问题出在C#代码而不是SQL中,您是否可以发布您正在使用的C#代码?您能否给出一个包含实际阿拉伯文的示例(只是为了确保其中没有未转义的'
字符)。它在Management Studio(查询分析器)上运行良好但是在VisualStudio中不工作,我会吗?这是我的代码,如果有什么不清楚的地方,请告诉我,谢谢^_^