Pergunta

Estou utilizando java e Sqlitejdbc Para trabalhar com o SQLite. Preciso acessar o nome das colunas para uma determinada tabela e descobri que poderia conseguir isso com o seguinte comando:

pragma table_info(myTable)

No entanto, ao tentar fazer o seguinte, recebo um erro.

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

Java.SQL.SQLEXCECTION: NYI

Não tenho idéia do que NYI significa e, além disso, não tenho certeza se posso fazer o que estou tentando fazer. Alguma sugestão de como posso realizar os nomes de colunas?

Foi útil?

Solução

NYI significa "ainda não implementado".

Eu acho que o comando "Pragma table_info" provavelmente não pode ser executado diretamente como uma instrução preparada.

Há um exemplo de execução dessa declaração Pragma no código para o driver SQLITE JDBC, classe org.sqlite.metadata, métodos como getColumns() e getPrimaryKeys().

Não posso extrair o código e publicá -lo aqui, porque isso não seria compatível com a licença Creative Commons usada pelo StackOverflow. Então, por favor, vá para esse link e dê uma olhada.

Outras dicas

Há esse trecho de código de Código -fonte sqlitejdbc:

 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);
    }

Acho que NYI significa "ainda não implementado".

Se a coisa do Pragma não está dando certo,

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)

Você pode pegar as definições reais da coluna do sqlite_master mesa e analisá -los por si mesmo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top