У меня есть две таблицы в 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, он возвращает строки очень хорошо.
Но если я пытаюсь запуститьэти операторы SQL в C ++ с этим кодом:
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!
Но он не возвращает никаких строк, как это делает оболочка. (должно быть "Thisявляется строкой! "напечатано для каждой строки в запросе. Я пытался добавить имена таблиц в запросы, но без помощи. Я также пытался запустить, например, SELECT * FROM Table1; а затем C ++ возвращает строки. Это так, что SQLITE вC ++ не может обрабатывать JOINS или Views?