Вопрос

Я использую Java и SQLiteJDBC - SQLiteJDBC для работы с SQLite.Мне нужно получить доступ к названию столбцов для данной таблицы, и я обнаружил, что могу выполнить это с помощью следующей команды:

pragma table_info(myTable)

Однако при попытке выполнить следующее я получаю сообщение об ошибке.

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

java.sql.SQLException Исключение:Нью - Йорк

Я понятия не имею, что значит NYI, и, более того, я не уверен, смогу ли я сделать то, что пытаюсь сделать.Есть какие-нибудь предложения о том, как я могу добиться получения имен столбцов?

Это было полезно?

Решение

NYI означает "еще не реализовано".

Я бы предположил, что команда "pragma table_info", вероятно, не может быть выполнена непосредственно в виде подготовленного оператора.

Есть пример выполнения этого оператора pragma в коде для драйвера SQLite JDBC, class org.sqlite.Метаданные, такие методы , как getColumns() и getPrimaryKeys().

Я не могу извлечь код и опубликовать его здесь, потому что это было бы несовместимо с лицензией Creative Commons, используемой StackOverflow.Поэтому, пожалуйста, перейдите по этой ссылке и взгляните.

Другие советы

Вот этот отрывок кода из Исходный код 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);
    }

Я предполагаю, что NYI означает "Еще не реализовано".

Если с прагмой что-то не получается,

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)

Вы можете получить фактические определения столбцов из sqlite_master составьте таблицу и разберите их сами.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top