自动填充仅显示以大写字母开头的名称

时间:2014-01-03 07:23:20

标签: c# sql sql-server-ce

我正在使用C#,SQL Server CE,VS 2010开发一个应用程序,并且我可以选择搜索记录。

如果我搜索具有大写字符的数据,我会得到记录,但当我尝试使用小型上限时,我没有得到任何记录。

我的要求与上述SQL查询一样

SELECT top ({0}) name FROM Expenses WHERE name like '%{1}%'

以小写字母提供输入时的屏幕截图。

when providing input in small caps

以大写字母提供输入时的屏幕截图。

when providing input in capital

代码:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    AutoCompleteStringCollection namesCollection = new AutoCompleteStringCollection();
    SqlCeConnection con = new SqlCeConnection(@"Data Source=|DataDirectory|\Database\Acadamy.sdf;Persist Security Info=False");

    con.Open();

    SqlCeCommand cmnd = con.CreateCommand();
    cmnd.CommandType = CommandType.Text;

    var fetchAmount = 10;
    var userInput = textBox1.Text.Trim();

    cmnd.CommandText = string.Format("SELECT top ({0}) name FROM Expenses WHERE name like '%{1}%'",
    fetchAmount, userInput);

    SqlCeDataReader dReader;
    dReader = cmnd.ExecuteReader();

    if (dReader.Read())
    {
       while (dReader.Read())
          namesCollection.Add(dReader["name"].ToString());
    }
    //else
    //{
    // MessageBox.Show(@"Data not found");
    //}
    dReader.Close();

    textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
    textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
    textBox1.AutoCompleteCustomSource = namesCollection;    
 }

代码有什么问题?

1 个答案:

答案 0 :(得分:0)

试试这个

cmnd.CommandText = string.Format("SELECT top ({0}) name FROM Expenses WHERE name like '%{1}%'", fetchAmount, userInput).ToUpper();