执行SQL查询

SQL查询语句允许应用程序基于指定的任何约束条件从数据库请求信息。查询后返回一个结果集。

本节包括以下主题:

  • 使用结果集
  • 指定查询

使用结果集

执行数据库查询时,会将查询结果放入一组称为结果集的行中。在ACCI中,SQL SELECT语句由Statement类的executeQuery方法执行。此方法返回表示查询结果的ResultSet对象。

ResultSet *rs = stmt->executeQuery("SELECT * FROM basket_tab");

在结果集中有了数据之后,就可以对其执行操作了。例如,假设您想打印这个表的内容。ResultSet的next()方法用于获取一行数据,getxxx()方法用于检索结果集的各个列,如下面的代码示例所示:

cout << "The basket has:" << endl;

    while (rs->next())

    {

       string fruit = rs->getString(1);     // 以string方式获取第一列的值

       int quantity = rs->getInt(2);        // 以int方式获取第二列的值

       cout << quantity << " " << fruit << endl;

    }

如果当前行的数据可用,则状态为DATA_AVAILABLE。读取所有数据后,状态更改为END_OF_FETCH。如果有任何输出流需要读取,则状态为STREAM_DATA_AVAILABLE,直到成功读取所有流数据为止。

指定查询

查询时可以绑定输入变量来指定查询的WHERE子句中的约束。例如,下面的程序只打印最小数量为4的项:

stmt->setSQL("SELECT * FROM basket_tab WHERE quantity >= :1");

int minimumQuantity = 4;

stmt->setInt(1, minimumQuantity);     // set first parameter

ResultSet *rs = stmt->executeQuery();

cout << "The basket has:" << endl;


while (rs->next())

   cout << rs->getInt(2) << " " << rs->getString(1) << endl;