2009-08-28 4 views
4

Java를 사용하고 SQLiteJDBC을 SQLite와 함께 사용하고 있습니다. 나는 주어진 테이블의 컬럼 이름에 액세스해야하고 난 다음 명령을 사용하여이 작업을 수행 할 수 있다는 것을 발견했습니다 다음을 수행 할 때SQLiteJDBC 및 PreparedStatement는 pragma table_info를 사용합니다.

pragma table_info(myTable) 

그러나, 나는 오류가 발생합니다.

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

은 java.sql.SQLException : 청년회

나는 청년회가 무엇을 의미하는지 전혀 모르는 나는 내가 할 노력하고있어 할 수 있다면 또한, 잘 모르겠어요. 컬럼 이름을 얻는 방법에 대한 제안 사항은 무엇입니까?

답변

3

NYI는 "아직 구현되지 않았다"는 것을 의미합니다.

"pragma table_info"명령은 아마도 준비된 명령문으로 직접 실행될 수 없다고 생각합니다.

SQLite JDBC 드라이버 코드 org.sqlite.Metadata에 대한 코드에서 해당 pragma 문을 실행하고 getColumns()getPrimaryKeys()과 같은 메서드를 실행하는 예제가 있습니다.

코드를 발췌하여 여기에 게시 할 수 없습니다. 그렇게하는 것은 StackOverflow에서 사용되는 크리에이티브 커먼즈 라이센스와 호환되지 않기 때문입니다. 그러니 그 링크로 가서보세요.

+0

코드를보고 나는 당신이 말하는 것을보고 있습니다. 고맙습니다. –

2

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

내가 청년회 같은데요은 "아직 구현되지 않음"을 의미합니다.

프라 그마의 일이 밖으로 작동하지 않는 경우

,

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 테이블에서 실제 열 정의를 잡아 자신을 구문 분석 할 수 있습니다.

관련 문제