我有这个代码来查询数据库:
for (int kk = 1; kk < search.Length; kk++)
{
where += " and keyword like '%"+search[kk]+";%'";
OleDbCommand sqlcmd = new OleDbCommand(
"select id,name,address,keyword from table1 where keyword like '%"+search[0]+"%' " +
where + " order by name", sqlconConnection);
sqlcmd.CommandType = CommandType.Text;
OleDbDataReader sdaRes = sqlcmd0.ExecuteReader();
while (sdaRes.Read())
{
thumbnails_id[recordcount] = sdaRes.GetInt32(3);
recordcount++;
}
sdaResult0.Close();
}
当我在访问中执行此查询时,它会返回结果,但是当我在应用程序中运行它时,它会运行但不会显示任何结果。
表的结构是:
数据库表如下所示:
id name keyword File Fkey
1 a yellow; c:/ 20
2 a blue; c:/ 20
3 a Pinky; c:/ 20
4 b blue; c:/ 21
5 b Redish; c:/ 21
6 c yellow; c:/ 22
7 c blue; c:/ 22
8 c Pinky; c:/ 22
9 c orange; c:/ 22
10 c Redish; c:/ 22
搜索查询的含义是这样的:
select * from this table1 where name like variable and variable two and variable three
等等。因此当用户输入橙色时所有结果都会出现,然后当用户输入橙色粉红色后,橙色和小指的结果应该会出现。但我不知道代码中有什么问题,虽然我没有收到错误或没有警告信息。
答案 0 :(得分:3)
您需要OR
代替AND
,因为关键字不能同时为“红色”和“蓝色”等...
答案 1 :(得分:0)
while (sdaRes.Read())
{
thumbnails_id[recordcount] = sdaResult0.GetInt32(3);
recordcount++;
}
要么这是一个拼写错误,要么你实际上并没有从你的查询中读取你所使用的阅读器的结果,而且id是第一列,所以它应该是:
while (sdaRes.Read())
{
thumbnails_id[recordcount] = sdaRes.GetInt32(0);
recordcount++;
}