首页 > 解决方案 > 从c中的sqlite数据库中选择多个项目

问题描述

我正在尝试在 c 中查询 sqlite,之前我打开并成功插入了一些项目到数据库中(返回 SQLITE_OK),当我查询总数据时(“SELECT * FROM TRANS_TABLE ...”)我可以成功检索我插入的数据但是当我尝试按特定项目查询时,我没有收到任何数据,我的代码有什么问题吗?

sql = "SELECT * FROM TRANS_TABLE WHERE F11_STAN = ?";

  cmdStat = sqlite3_prepare_v2(db, sql, -1, &res, 0);

  if (cmdStat == SQLITE_OK)
  {
  sqlite3_bind_text( res, 1,( char *)f11, strlen(( char *)f11), 0);
  }
  else
  {
      netLogMsg(( uint8_t*)sqlite3_errmsg(db));
      return ;
  }

  int step = sqlite3_step(res);

  if (step == SQLITE_ROW)
  {
    netLogMsg(( uint8_t *)sqlite3_column_text(res, 0));
    netLogMsg(( uint8_t *)sqlite3_column_text(res, 1));
  }
else if (step == SQLITE_DONE)
{
  //this line is executed !
  netLogMsg(( uint8_t *)sqlite3_errmsg(db));
}
  memcpy( f11, sqlite3_column_text(res, 1), strlen(( const char *)sqlite3_column_text(res, 1)));

  sqlite3_finalize(res);

标签: csqliteembedded-linux

解决方案


尝试将 id 绑定到准备好的语句:

sql = "SELECT * FROM TRANS_TABLE WHERE F11_STAN = ?1";
cmdStat = sqlite3_prepare_v2(db, sql, -1, &res, 0);
sqlite3_bind_int(res, 1, 5);  

推荐阅读