C# 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

当sql命令中的条件为阿拉伯语时,sqldatareader存在如下问题:

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中不工作,我会吗?这是我的代码,如果有什么不清楚的地方,请告诉我,谢谢^_^