【发布时间】:2012-08-15 00:22:29
【问题描述】:
C++ SQLite3如何知道select是否返回0行
我有一个sqlite3的select语句,我怎么知道如果执行sql语句后,结果是0行,没有找到匹配等等。
如何修改我的代码,以便如果找到 0 行,它将不会执行将结果放入向量的部分。
我的代码如下:
sqlstatement = "SELECT * from abe_account where department="+quotesql(department)+" AND name="+quotesql(name)+";";
std::vector< std::vector < std:: string > > result;
for( int i = 0; i < 4; i++ )
result.push_back(std::vector< std::string >());
sqlite3_prepare( db, sqlstatement.c_str() , -1, &stmt2, NULL );//preparing the statement
sqlite3_step( stmt2 );//executing the statement
while( sqlite3_column_text( stmt2, 0 ) )
{
for( int i = 0; i < 4; i++ )
result[i].push_back( std::string( (char *)sqlite3_column_text( stmt2, i ) ) );
sqlite3_step( stmt2 );
counter ++;
}
【问题讨论】:
-
只需检查
sqlite3_step的返回码...和RTFM。 -
我在寻找什么返回码?我知道 101 执行成功
-
你指的是“SQLITE_EMPTY”
-
@baokychen:
SQLITE_ROW表示有一行;SQLITE_DONE表示查询完成,没有更多行了。这在documentation 中有描述。