2009-08-04 261 views
16

sqlite3にテキスト列を作成/更新したいと思います。 作成/更新後に行を取得すると、テキストは '?'になります。 ただし、整数値は正しく保持されます。SQLite_TRANSIENTとSQLITE_STATICのどちらを使用するのですか?

マイテキスト文は次のようになります。

const char *sql = "INSERT INTO todo(title, description, priority, status, created, expires, posx, posy, updated)" 
        " VALUES('?', '?', '?', '?', '?', '?', '?', '?', '?');"; 
if (sqlite3_prepare_v2(database, sql, -1, &insert_statment, NULL) != SQLITE_OK) 
    ... 
sqlite3_bind_text(update_statment, 5, [[dt stringFromDate:self.updated] UTF8String], -1, SQLITE_TRANSIENT); 

私はSQLITE_TRANSIENTなどSQLITE_STATICを試してみました。どちらの場合も同じ結果が得られます( '?')。また、ここで適切なSQL文に渡されるときにテキスト値が有効であることを確認しました。

アイデア?

+0

準備文はどのように見えますか? –

答えて

39

'周辺の文字を削除しますか?あなたのSQL文字列で。

SQLITE_TRANSIENTは、文字列をコピーするようにSQLiteに指示します。クエリが実行される前に文字列(バッファ)がなくなるときに使用します。

SQLITE_STATICは、クエリが実行されるまで文字列に渡すポインタが有効であることを約束していることをSQLiteに伝えます。あなたのバッファがum、static、または少なくともバインディングのそれを超えるダイナミックスコープを持っている場合は、これを使います。

+0

私はこれを試してみます。 –

+1

これはあまりにも意味をなさない。デュ。どうもありがとう! –

関連する問題