我用谷歌搜索了一些有用的网站,这些网站帮助了我,但不确定到底出了什么问题。我的数据库中包含数据。我可以在页面加载上显示数据,我可以使用下一个和上一个按钮对数据进行排序,但问题是我的查找按钮不起作用,并且在搜索名称时始终显示“找不到行”消息。我确信有一种更有效的方法可以做到这一点,但还没有看到它。
由于
这是我的代码:
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();
答案 0 :(得分:1)
您的.Select
字符串正在为搜索字词的开头和结尾添加空格。如果searchFor
包含Thompson
,那么您的陈述将是
.Select("LastName=' Thompson ' ")
所以没有条目匹配,除非他们有一个领先的空间。另外,我不知道ds.tblAddressBook
与任何事情有什么关系,所以我只是用它来代替:
returedRows = ds.Tables["Info"].Select("LastName='" + searchFor + "'");
现在你需要调整你的代码,这样当有人试图搜索O'Connor
时它就不会爆炸。