2012-04-04 5 views
0

コンパイルされたステートメントからテーブル名を見つける必要があります(sqlite3_prepare_v2 sqlite3ライブラリのメソッドから返されます)。Xcode、Objective-Cでテーブル名をSqlite3で見つけよう

この方法では、[SQLITE_ENABLE_COLUMN_METADATA]オプションでコンパイルされたdylibが必要なため、const char *sqlite3_column_table_name(sqlite3_stmt*,int);というメソッドを使用することはできません。

dylibをコンパイルする方法を知りたいのですが(コンパイルするコードを見つけ出し、どのようにコマンドやフラグを指定できるのでしょうか?)、またはテーブル名を細かくする別の方法がある場合は、ステートメントを構築するために使用されるクエリを取得するための

答えて

0

あなたの文は、おそらく内蔵されているクエリの種類のために知っている場合は、この方法を使用することができ、

/* 
** CAPI3REF: Retrieving Statement SQL 
** 
** ^This interface can be used to retrieve a saved copy of the original 
** SQL text used to create a [prepared statement] if that statement was 
** compiled using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()]. 
*/ 
SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt); 

。クエリが取得されると、クエリを解析してテーブル名を取得できます。あなたの文が挿入されている場合は、

INSERT INTO TABLE_NAME... 

は今、3番目のワードは、あなたのテーブル名ですなるだろうEXについては

componentSeperatedByString 

ただし、正規表現を使用することをお勧めします。

+0

答えをありがとう。 しかし、私はコードをより一般的かつ可能な限り再利用可能にしたいので、クエリの名前を検索することは避けてください。とにかくありがとう。 @Curlyman。 –

+0

あなたが答えを見つけたら、それを参考にしてください。ありがとう。 – Vignesh

関連する問題