【问题标题】:Find data in data set在数据集中查找数据
【发布时间】:2013-11-27 13:07:24
【问题描述】:

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

谢谢

这是我的代码:

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();

【问题讨论】:

    标签: database ms-access dataset buttonclick


    【解决方案1】:

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

    .Select("LastName=' Thompson ' ")
    

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

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

    现在您需要调整您的代码,这样当有人尝试搜索 O'Connor 时它不会崩溃。

    【讨论】:

    • 我看到了 ds.Tables 的问题,但仍会寻找空格。再次感谢。现在开始处理奥康纳问题
    猜你喜欢
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多