Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite选择C++中的连接和视图_C++_Sql_Sqlite_Select - Fatal编程技术网

SQLite选择C++中的连接和视图

SQLite选择C++中的连接和视图,c++,sql,sqlite,select,C++,Sql,Sqlite,Select,我在SQLITE和视图中有两个表,我试图在其中合并这两个表。我的想法是从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;

我在SQLITE和视图中有两个表,我试图在其中合并这两个表。我的想法是从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++代码运行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*FROMTABLE1;然后C++返回行。C++中的SQLite不能处理连接或视图吗? 如果要收集行,则使用Sqlite3\u exec API或列API。Sqlite3\u步骤仅计算准备好的语句,它不会获取结果,因为您必须使用不同的可用API,或者您可以使用Sqlite3\u exec(包装器)

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


一切都很好。

实际上我试着使用sqlite3\u exec。如果我从Col1='1'所在的表中选择*,一切都会顺利进行;但如果我从Col2喜欢“Text%”的表中选择*;回调函数不获取任何记录。如果我尝试从View1中选择*;它不返回任何行。尽管数据库引擎似乎正在做一些事情,因为查询似乎需要时间来运行。