SQL查询的问题

本文关键字:问题 查询 SQL | 更新日期: 2023-09-27 17:50:12

我有这个代码来查询数据库:

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

当我在access中执行这个查询时,它返回结果,但是当我在应用程序中运行它时,它运行但不显示任何结果。

表的结构是:

数据库表是这样的:

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等等。所以当用户输入假设橙色所有的结果应该出现当用户输入橙色后,Pinky然后橙色和Pinky的结果应该出现。但我不知道什么是错误的代码,虽然我没有得到错误或没有警告消息。

SQL查询的问题

您需要OR而不是AND,因为关键字不能同时是'红色'和'蓝色'等

while (sdaRes.Read())
{
    thumbnails_id[recordcount] = sdaResult0.GetInt32(3);
    recordcount++;
}

这要么是一个打字错误,要么你没有真正从你的查询中使用的阅读器中读取结果,id也是第一列,所以我认为它应该是:

while (sdaRes.Read())
{
    thumbnails_id[recordcount] = sdaRes.GetInt32(0);
    recordcount++;
}