2012-04-04 4 views
0

Ich muss einen Tabellennamen aus einer compiledStatement finden (von sqlite3_prepare_v2 Methode der SQLite3-Bibliothek zurückgegeben).Finden Sie einen Tabellennamen in Xcode, Objective-C mit Sqlite3

Ich kann die Methode const char *sqlite3_column_table_name(sqlite3_stmt*,int); nicht verwenden, da diese Methode erfordert die Dylib mit der Option [SQLITE_ENABLE_COLUMN_METADATA] kompiliert.

Ich möchte wissen, wie man die dylib mit dieser Option (wo kann ich den Code zu kompilieren und wie das zu tun, mit welchem ​​Befehl und Flags?) Neu kompilieren oder wenn existiert eine andere Methode, um den Tabellennamen zu verfeinern.

Antwort

0

Wenn Sie Art von Anfragen wissen, für die Ihre Aussage wahrscheinlich gebaut wird, können Sie diese Methode verwenden können,

/* 
** 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); 

die Abfrage abgerufen werden verwendet, um die Anweisung zu bauen. Sobald die Abfrage abgerufen wurde, können Sie die Abfrage analysieren, um den Tabellennamen abzurufen.

Für ex, wenn Ihre Aussage ein Einsatz ist, würden Sie

erhalten
INSERT INTO TABLE_NAME... 

jetzt das dritte Wort Name Ihre Tabelle ist. Sie können verwenden,

componentSeperatedByString 

Aber ich würde die Verwendung von Regular Expression bevorzugen.

+0

Danke für die Antwort. Aber ich würde vermeiden, den Namen in der Abfrage zu suchen, weil ich den Code allgemeiner und wiederverwendbar wie möglich machen möchte. Danke trotzdem. –

+0

@ Curlyman. Wenn Sie die Antwort finden, bitte posten Sie es.wäre hilfreich !. Vielen Dank. – Vignesh

Verwandte Themen