2013-11-14 33 views
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(); 

回答

1

.Select字符串添加到搜索词的开头和结尾的空间。如果searchFor包含Thompson那么你的声明将是

.Select("LastName=' Thompson ' ") 

所以没有条目将除非他们有领先的空间相匹配。另外,我也没有想到过,所以我只是用这个代替任何东西做什么ds.tblAddressBook

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

现在,你需要调整你的代码,这样就不会爆炸,当有人试图寻找O'Connor

+0

我看到了ds.Tables的问题,但仍然在寻找空间。再次感谢。现在处理奥康纳问题 –