2013-11-14 35 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的問題,但仍然在尋找空間。再次感謝。現在處理奧康納問題 –