Frage

Ich benutze Java und Sqlitejdbc mit SQLite arbeiten. Ich muss auf den Namen der Spalten für eine bestimmte Tabelle zugreifen, und ich habe festgestellt, dass ich dies mit dem folgenden Befehl erreichen kann:

pragma table_info(myTable)

Beim Versuch, Folgendes zu machen, erhalte ich jedoch einen Fehler.

PreparedStatement _pstmt =
    this._DBConnection.prepareStatement("pragma table_info( '?' );",
         new String[] {_tableName} );

java.sql.sqlexception: nyi

Ich habe keine Ahnung, was NYI bedeutet, und ich bin mir nicht sicher, ob ich das tun kann, was ich versuche zu tun. Irgendwelche Vorschläge, wie ich das Erhalten der Spaltennamen erreichen kann?

War es hilfreich?

Lösung

NYI bedeutet "noch nicht implementiert".

Ich würde vermuten, dass der Befehl "Pragma table_info" wahrscheinlich nicht direkt als vorbereitete Anweisung ausgeführt werden kann.

Es gibt ein Beispiel für die Ausführung dieser Pragma -Anweisung im Code für den SQLite JDBC -Treiber, Klasse org.sqlite.metadata, Methoden wie z. getColumns() und getPrimaryKeys().

Ich kann den Code nicht ausziehen und hier veröffentlichen, da dies nicht mit der Creative Commons -Lizenz von Stackoverflow kompatibel wäre. Gehen Sie also bitte zu diesem Link und schauen Sie sich an.

Andere Tipps

Es gibt diesen Codeauszug von SQLiteJDBC -Quellcode:

 public PreparedStatement prepareStatement(String sql, int autoC)
        throws SQLException { throw new SQLException("NYI"); }
    public PreparedStatement prepareStatement(String sql, int[] colInds)
        throws SQLException { throw new SQLException("NYI"); }
    public PreparedStatement prepareStatement(String sql, String[] colNames)
        throws SQLException { throw new SQLException("NYI"); }
    public PreparedStatement prepareStatement(String sql, int rst, int rsc) 
                                throws SQLException {
        return prepareStatement(sql, rst, rsc,
                                ResultSet.CLOSE_CURSORS_AT_COMMIT);
    }

Ich vermute, NYI bedeutet "noch nicht implementiert".

Wenn das Pragma -Ding nicht funktioniert,

sqlite> CREATE TABLE a(col1, col2, col3);
sqlite> CREATE TABLE b(w, x, y, z);
sqlite> SELECT * FROM sqlite_master;
table|a|a|2|CREATE TABLE a(col1, col2, col3)
table|b|b|3|CREATE TABLE b(w, x, y, z)

sqlite> SELECT sql FROM sqlite_master;
CREATE TABLE a(col1, col2, col3)
CREATE TABLE b(w, x, y, z)

Sie können die tatsächlichen Spaltendefinitionen aus dem schnappen sqlite_master Tisch und analysieren Sie sie selbst.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top