С помощью этого кода я пытаюсь получить оператор SQL CREATE из sqlite_master для конкретной таблицы:
[SQLStatement setString: @ "SELECT name, sql FROM sqlite_master WHERE 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 изменяется на" index ", а sqlColumn на что-то непонятное, хотя цикл не повторяется.
Какэто может случиться?Что я делаю не так?