1

我用谷歌搜索了一些有用的网站,这些网站帮助了我,但不确定到底出了什么问题。我有我的数据库,里面有数据。我可以在页面加载时显示数据,并且可以使用下一个和上一个按钮对数据进行排序,但问题是我的查找按钮不起作用,并且在搜索名称时始终显示“未找到行”消息。我确信有一种更有效的方法可以做到这一点,但还没有研究过。

谢谢

这是我的代码:

string searchFor = txtSearch.Text.Trim();
    int results = 0;

    OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=H:\AddressBook.mdb");

    conn.Open();
    DataSet ds = new DataSet();
    string cmd = "SELECT * FROM tblAddressBook";

    OleDbDataAdapter da = new OleDbDataAdapter(cmd, conn);
    da.Fill(ds, "Info");

    DataRow[] returedRows;
    DataRow dr;
    returedRows = ds.Tables.Select("LastName=' " + searchFor + " ' ");
    results = returedRows.Length;

    if (results > 0)
    {   
        dr = returedRows[0];
        txtFirstName.Text = dr["FirstName"].ToString();
        txtLastName.Text = dr["LastName"].ToString();
        txtEmail.Text = dr["Email"].ToString();
        txtPhone.Text = dr["PhoneNumber"].ToString();
    }
    else
    {
        lblReturned.Text = "No Rows Found";
    }

    //close the connection
    conn.Close();
4

1 回答 1

1

您的.Select字符串在搜索词的开头和结尾添加了一个空格。如果searchFor包含Thompson,那么您的陈述将是

.Select("LastName=' Thompson ' ")

所以除非有前导空格,否则没有条目会匹配。另外,我不知道ds.tblAddressBook与任何事情有什么关系,所以我只使用了这个:

returedRows = ds.Tables["Info"].Select("LastName='" + searchFor + "'");

现在你需要调整你的代码,这样当有人试图搜索O'Connor.

于 2013-11-14T14:23:33.190 回答