SQLiteJDBC and PreparedStatement for using pragma table_info

I use Java and SQLiteJDBC to work with SQLite. I need to access the column name for this table, and I found that I can accomplish this with the following command:

pragma table_info(myTable) 

However, when I try to do the following, I get an error message.

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

java.sql.SQLException: NYI

I don't know what NYI is, and besides, I'm not sure if I can do what I'm trying to do. Any suggestions on how I can get the column names?

+4
source share
2 answers

NYI means not yet implemented.

I would suggest that the pragma table_info command probably could not be executed directly as a prepared statement.

Here is an example of executing this pragma statement in the code for the SQLite JDBC driver, class org.sqlite.Metadata , methods such as getColumns() and getPrimaryKeys() .

I cannot extract the code and post it here because it is not compatible with the Creative Commons license used by StackOverflow. So please follow this link and take a look.

+3
source

Here is this piece of code from SQLiteJDBC Source Code :

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

I assume NYI means "Not yet implemented."

If the pragma does not work,

 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) 

You can get the actual column definitions from the sqlite_master table and analyze them yourself.

+2
source

All Articles