有了這個代碼,我試圖讓SQL創建SQLITE_MASTER聲明特定表:怪異*字符變化
[的SQLStatement了setString:@「選擇名稱,SQL FROM SQLITE_MASTER其中type = 'table'AND name ='「];
[SQLStatement appendString:tableName]; [SQLStatement appendString:@「'」];
int dbrc;
const char *charSQLStatement = [SQLStatement UTF8String];
sqlite3_stmt *statement = nil;
dbrc = sqlite3_prepare_v2 (dbHandleSQLite, charSQLStatement, -1, &statement, NULL);
const char *nameColumn,*sqlColumn;
dbrc = sqlite3_step (statement);
NSString *tempString;
do {
nameColumn = sqlite3_column_text(statement,0);
sqlColumn = sqlite3_column_text(statement,1);
NSLog(@"%s",nameColumn);
NSLog(@"%s",sqlColumn);
tempString = [NSString stringWithCString:sqlColumn encoding:NSASCIIStringEncoding];
} while (sqlite3_step(statement) == SQLITE_ROW);
sqlite3_finalize (statement);
NSLog(@"%s",nameColumn);
NSLog(@"%s",sqlColumn);
do-while循環只運行一次。你可以看到,我已經做出了一個小的解決方法來獲得這個工作並賦值給tempString。 原因是因爲如果sqlite3_step(語句)再次運行,nameColumn和sqlColumn會更改它們的值,但不會再次被調用?!!
nameColumn是firt分配的表的名稱和sqlColumn被分配「CREATE TABLE ...」語句,這是正常的。
但是,當程序來到while句子時,nameColumn更改爲「index」,sqlColumn更改爲不可理解的東西,儘管循環不重複。
這是怎麼發生的?我究竟做錯了什麼?
謝謝!這很清楚。 – mbpro 2010-11-23 19:13:02