使用MySQL自动完成文本框

时间:2011-06-13 14:41:57

标签: c# .net sql winforms autocomplete

我正在尝试使用下面的代码执行文本框自动完成,但它会给出错误

ERROR :"Object reference not set to an instance of an object"

在这一行:

for (int count = 0; count < dt.Rows.Count; count++)

任何人都可以帮助我吗?

private void tbMemberName_TextChanged_1(object sender, EventArgs e)
{
    tbMemberName.AutoCompleteMode = AutoCompleteMode.Suggest;
    tbMemberName.AutoCompleteSource = AutoCompleteSource.CustomSource;
    AutoCompleteStringCollection namec = new AutoCompleteStringCollection();

    //string search ="%"+ tbMemberName.Text +"%";
    //string @Name = tbMemberName.Text; 
    String sql =
        @"SELECT DISTINCT(member_Firstname +''+ member_Lastname) AS Name FROM members WHERE Name  Like '%'+tbMemberName.Text+'%'";
    DataTable dt = MemberFormHelper.GetData(sql, mf);
    if (dt.Rows.Count >= 0)
    {
        for (int count = 0; count < dt.Rows.Count; count++)
        {
            namec.Add(dt.Rows[count][Name].ToString());
        }
    }
    tbMemberName.AutoCompleteCustomSource = namec;
}

2 个答案:

答案 0 :(得分:0)

如果NRE来自这一行

for (int count = 0; count < dt.Rows.Count; count++)那只能意味着dt为空。

所以MemberFormHelper.GetData(sql, mf);返回一个空值。在循环之前修复GetData()或检查dt为空。

答案 1 :(得分:0)

尝试

for (int count = 0; count < dt.Rows.Count-1; count++)

如果行数为10,则需要从0循环到9(10-1)。

干杯