:奇妙char *型の変化私はSQLは、特定のテーブルのためにsqlite_masterからCREATE文を取得しようとしている。このコードで
[SQLStatementのsetStringの: "@する名前を選択し、sqlite_masterからSQL WHEREタイプ= '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ループは1回だけ実行されます。 tempStringに値を代入して割り当てるための小さな回避策を作ったことが分かります。 理由は、sqlite3_step(statement)が再度実行された場合、nameColumnとsqlColumnは再び呼び出されませんが、それらの値が変更されるからです。
nameColumnにはテーブルの名前が割り当てられており、sqlColumnには "CREATE TABLE ..."ステートメントが割り当てられています。これは正常です。
whileプログラムがwhile文になると、nameColumnが "index"に変更され、sqlColumnが理解できないものに変更されますが、ループは繰り返されません。
どうすればいいですか?私は間違って何をしていますか?
ありがとうございます!これは明らかです。 – mbpro
質問を閉じるには、答えを受け入れるべきです。 :) –