sql查询的问题

时间:2011-04-15 11:14:02

标签: c# sql

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

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等等。因此当用户输入橙色时所有结果都会出现,然后当用户输入橙色粉红色后,橙色和小指的结果应该会出现。但我不知道代码中有什么问题,虽然我没有收到错误或没有警告信息。

2 个答案:

答案 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++;
}