我在一个网站上写了这个程序。它将一个字符串作为输入参数(用户名)并查看相关表以找出它的记录并返回“ID”字段作为过程的输出。这项工作很好,但有一个(主要)问题,即当它以其他英语输入时,它找不到目标记录并返回“-1”作为输出。访问者使用波斯语,我在我的 SQLserver 中观察到它。排序规则是“Persian_100_CI_AI”,我的字符串字段是“nvarchar”。我应该怎么做才能解决这个问题?我正在使用 SQL-Server 2008。
多谢
protected int GetThisUserID(string uname)
{
string returnvalue = "";
int returnintegervalue = -1;
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["OldEagleConnectionString"].ToString());
try
{
//SqlCommand command = new SqlCommand("SELECT [ID] FROM [Customers] WHERE ([Uname] = '" + User.Identity.Name.ToString() + "'", connection);
//SqlCommand command = new SqlCommand("SELECT * FROM [Customers] WHERE ([Uname] = '" + User.Identity.Name.ToString() + "')", connection);
SqlCommand command = new SqlCommand("SELECT * FROM [Customers] WHERE ([Uname] = '" + uname + "')", connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
returnvalue = reader["ID"].ToString();
returnintegervalue = Int32.Parse(returnvalue);
}
}
}
catch (SqlException ex)
{
Response.Write(ex.Message.ToString());
returnvalue = ex.Message.ToString();
}
finally
{
connection.Close();
SqlConnection.ClearPool(connection);
}
return returnintegervalue;
}