c++ - C++ 中的 SQLite SELECT JOIN 和 VIEWS

标签 c++ sql sqlite select

我在 SQLITE 和 View 中有两个表,我尝试在其中合并这两个表(我的想法是从 table1 中获取所有行,其中 table1.field1 和 table2.field99 具有相同的值。

Tables and View are Table1,Table2 and View1
View code is  "SELECT * FROM Table1 JOIN Table2 ON UPPER(Field1) LIKE UPPER(Table2.Field99)"

如果我跑

SELECT * FROM View1; 

或者如果我跑

SELECT * FROM Table1 JOIN Table2 ON UPPER(Field1) LIKE UPPER(Field99);

它从 sqlite shell 返回行就好了。

但是如果我尝试使用以下代码在 C++ 中运行这些 SQL 语句:

if(sqlite3_prepare_v2(database,SQLStr,-1,&stmt,0)==SQLITE_OK){
   int cols = sqlite3_column_count(stmt);
   printf("Query OK: %s \nColumns: %i\n", SQLStr, cols);
   while(1) {
      status = sqlite3_step(stmt);
      if(status == SQLITE_ROW) {
         printf("This is a row!\n");
      } else if(status == SQLITE_DONE) {
         printf("Rows handled!\n");
         break;
      } else {
         printf("Other status!\n");
         break;
      }
   }
}

它只是返回:

Rows handled: SELECT * FROM View1; 
Columns: 7
Rows handled!

但它不像 shell 那样返回任何行。 (应该为查询中的每一行打印“这是一行!”。我试图将表名添加到查询中但没有帮助。我还尝试运行例如 SELECT * FROM Table1; 然后 C++ 返回行。是不是 C++ 中的 SQLITE 无法处理 JOINS 或 Views?

最佳答案

如果你想收集行然后使用 Sqlite3_exec() API 或列 API.sqlite3_step() 只评估准备好的语句它不获取结果,因为你必须使用不同的可用 api 或者你可以使用 sqlite3_exec which是一个包装器。

检查以下链接 http://www.sqlite.org/c3ref/funclist.html http://www.sqlite.org/cintro.html

祝一切顺利

关于c++ - C++ 中的 SQLite SELECT JOIN 和 VIEWS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9308640/

相关文章:

c++ - 我是否正确地将局部空间转换为世界空间坐标?

c++ - 复制构造函数的参数选择

c++ - 与 Ruby 的 Rack 最接近的 C++ 类似物是什么?

mysql - 将文本文件中的数据加载到数据库中的表中

python - 将计时器存储在 SQLite 数据库中 - python

ios - 如何打开 CoreData 数据库文件以查看保存的值

python - 为什么 SQLite3 不需要调用 commit() 来保存数据?

c++ - 如何克服C++对嵌入式系统缺乏工具支持的问题?

php - 无法获取sql中所有相似行的总和

c# - 使用函数 sql 更新所有记录