我在SQLITE和View中有兩個表,我嘗試編譯這兩個表(我的想法是從table1獲取所有行,其中table1.field1和table2.field99具有相同的值。在C++中SQLite SELECT JOIN和VIEWS
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的SHEL運行
SELECT * FROM Table1 JOIN Table2 ON UPPER(Field1) LIKE UPPER(Field99);
它返回行很好。
但是,如果我嘗試運行用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!
但像貝殼做它不返回任何行。 (這裏應該是「This is a row!」,爲查詢中的每一行打印,我嘗試將表名添加到查詢中,但沒有幫助,我也試着運行SELECT * FROM Table1;然後C++返回行。它是如此的C++是SQLITE不能處理的加入或意見?
嗯,其實我試過使用sqlite3_exec。一切順利,如果我做SELECT * FROM表WHERE Col1 ='1';但如果我做SELECT * FROM Table WHERE Col2 LIKE'Text%';回調函數沒有得到任何記錄。另外如果我嘗試選擇*從View1;它不返回任何行。儘管數據庫引擎似乎在做某些事情,因爲查詢似乎需要一些時間才能運行。 – varjis 2012-02-27 01:05:03