当sql命令中的条件是阿拉伯语时,sqldatareader会出现问题,如下所示:
select user_name from users where typ=N 'arabic text'
尽管有一个具有这种类型的用户名,但这不会检索任何数据,
所以你能帮我吗?谢谢^_^
当sql命令中的条件是阿拉伯语时,sqldatareader会出现问题,如下所示:
select user_name from users where typ=N 'arabic text'
尽管有一个具有这种类型的用户名,但这不会检索任何数据,
所以你能帮我吗?谢谢^_^
我已经重写了您的代码以使用查询参数。您希望避免将字符串直接放入您的查询中(无论如何,该类型很可能应该被规范化)。main 函数可能应该将一个客户端列表返回到您的表示层,然后由它负责显示客户端,但我没有走那么远。
由于您的查询是在 Management Studio 中运行的,因此您的数据库排序规则设置应该没问题。
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;
}