我在ASP.net/SQL Server中遇到了一個奇怪的問題,真的無法找出問題所在。我有一個AutoCompleteExtender,可以從Web服務中找出預測結果。在我被迫更改提供web服務的SQL Server 2008數據庫的排序規則之前,它一直在使用英語和非英語字符。AutoCompleteExtender奇怪的問題
沒有什麼改變,但是這個數據庫和從Nvarchar改變爲Varchar的列類型的排序規則。 SQL服務器在執行查詢時顯示結果正確,但是:
問題是,在autocompleteextender文本框中輸入英文時,它立即作出響應,但是當我在那裏輸入非英語單詞時,我應該按下BACKSPACE鍵以刪除最後一個字符,以便它響應。我的數據庫排序規則是SQL_Latin1_General_CP1256_CI_AS。
我不明白爲什麼在輸入非英文字符時會暴露這種奇怪的行爲。
這是貼在我的AJAX autocompleteextender Web服務代碼:
[WebMethod(EnableSession = true)]
[System.Web.Script.Services.ScriptMethod]
public string[] GetCompletionListByVT(string prefixText, int count)
{
List<string> returnData = new List<string>();
try
{
string connStr = ConfigurationManager.ConnectionStrings["CS"].ConnectionString;
SqlConnection objconnection = new SqlConnection(@connStr);
string strsql = "SELECT TOP 10 CompanyName FROM ViewAutoCompleteWSFeed WHERE (CompanyName LIKE '%" + prefixText+"" + "%');";
objconnection.Open();
// strsql = "SELECT TOP 10 CompanyName FROM ViewAutoCompleteWSFeed WHERE (CompanyName LIKE '%" + prefixText + "%' OR Business_Landline_Phone_1 LIKE '%" + prefixText + "%' OR Business_Landline_Phone_2 LIKE '%" + prefixText + "%' OR MobileNumb1 LIKE '%" + prefixText + "%' OR MobileNumb2 LIKE '%" + prefixText + "%' OR EmailAddress LIKE '%" + prefixText + "%' OR Business_Address LIKE '%" + prefixText + "%' OR htCompanySN LIKE '%" + prefixText + "%' OR htCompanyNo LIKE '%" + prefixText + "%' OR Notes LIKE '%" + prefixText + "%');";
SqlCommand objcommand = new SqlCommand(strsql, objconnection);
SqlDataReader dr = objcommand.ExecuteReader();
while (dr.Read())
{
returnData.Add(dr["CompanyName"].ToString());
}
objconnection.Close();
return returnData.ToArray();
}
catch (Exception ex)
{
returnData.Add(prefixText);
}
return returnData.ToArray();
}