2010-02-22 4 views
1

계속 this 질문입니다.RestulSet 테이블에서 JTable 편집

제 문제는 제 JTable을 편집 할 수 없다는 것입니다. 내가보아야하는 것 대신에 예외와 Object 값을 얻습니다.

ResultSet Table 코드를 MS-Access 데이터베이스와 몇 가지 수정 사항을 사용하여 사용하고 있습니다. 내 코드는 here입니다. rs.updateRow()이 호출되면 오류가 발생합니다. java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]Error in row.

나는이 오류에 대해 updateRow()으로 Google 검색을 수행하지 않았으며별로 도움이되지 못했습니다. 내가 본 유일한 진정한 대답은 준비된 문장을 사용하는 것이지만 나는 SQL 명령을 사용하는 전문가가 아닙니다.

GlazedList가 될 수 있도록 최선의 방법을 알려 주시면 더 쉽게 필터링 할 수 있습니다. 않는 한 당신이 나를 정기적으로 JTables를 필터링 뭔가를 제공 할 수 있습니다.

+0

오케이. 데이터베이스를 쉽게 표시 할 수 있지만 SQL 명령을 사용하지 않고 편집하는 것은 거의 불가능합니다. 어떤 SQL 명령을 편집해야합니까? – twodayslate

+1

@twodayslate : 'UPDATE tableName (columnName1, columnName2 등) SET columname2 = column2value WHERE columnName1 = row_value' - columnName1이 기본 키 열이라고 가정합니다. 문제는 여전히 귀하의 JDBC 드라이버가 업데이트 가능한 ResultSet을 지원하지 않는다고 생각합니다. – BobMcGee

+0

지원되는 드라이버를 얻으려면 어떻게해야합니까? 당신의 대답을보기 전에 테이블 편집을 지원하는 새로운 TableModle을 만들었습니다. 그러나 데이터베이스에 대한 변경 사항은 반영되지 않습니다. 아직. resultSet 메서드는 SQL 명령없이 테이블에 변경 내용을 저장합니까? – twodayslate

답변

1

초기 솔루션이 100 % 작동하지 않았기 때문에 도움말을 제공하려고 시도합니다.

여기에 정보를보십시오 : Updatable ResultSetsConnection에서 Statement 객체를 생성 할 때 지정하는 인수하여 ResultSet 갱신을 만드는 방법을 참조하십시오. 이 옵션이 기본적으로 설정되지 않았을 수도 있습니다. 드라이버가이 모드를 지원하면 코드가 작동 할 수 있어야합니다.

편집 : 드라이버가 반드시 필요한 것은 아닙니다 (변경하려면 JAR이 필요하지만). 테이블을 만들 때 ResultSet.TYPE_SCROLL_SENSITIVE을 활성화해야합니다. 드라이버는이 모드를 계속 지원할 수 있습니다. JDBC 드라이버가 지원하는 것을 조사하는 방법이 있지만 SquirrelSQL Client와 같은 GUI를 사용하여 전체 기능 목록을 얻지 않는 한 사용하기가 쉽지 않습니다.

+0

지속적인 도움에 감사드립니다. 어떻게 운전 기사를 바꿀 수 있습니까? 나는 현재'sun.jdbc.odbc.JdbcOdbcDriver'를 사용하고 있습니다. 나는'com.pointbase.jdbc.jdbcDriver'를 사용하려고했지만 작동하지 않습니다. 항아리가 필요해? 당신이 준 링크에서 - 내 프로그램은'ResultSet.TYPE_FORWARD_ONLY'에 오류를 던져서 문제를 일으키는 드라이버 여야합니까? – twodayslate

+0

@twodayslate : 편집을 참조하십시오. – BobMcGee

+0

행을 SENSITIVE로 변경하면 여전히 오류가 발생합니다. 코드 작업을 할 때 ... 어떤 드라이버를 사용 했습니까? 예제에서 그들은 com.pointbase.jdbc.jdbcDriver를 사용했지만 MS-Access 용 항아리를 찾지 못했습니다. – twodayslate

1

나는 ResultSetTableModel의 더 나은 예를 들어 웹 검색 결과 집합 표 코드

을 사용하고 있습니다. 이미 setValueAt (...) 메소드를 구현 한 것을 찾을 것이라고 확신합니다. 또 다른 방법은 ResultSet의 데이터를 DefaultTableModel에 복사 한 다음 문제를 편집 할 수 있습니다.

정규 JTable을 쉽게 정렬 할 수있는 항목을 제공하지 않는 한.

JTable API를 읽고 정렬의 실제 예제가 들어있는 "How to Use Tables"의 스윙 튜토리얼에 대한 링크를 따라 가봤습니까? 정렬은 JDK의 기본 부분이므로 정렬입니다.

+0

아내들. 여러 값을 필터링하는 의미였습니다. DefaultTableModel 메서드는 데이터베이스를 최신 상태로 유지합니까? Google에서 여전히 오류가 발생했습니다. setValueAt – twodayslate

+1

이 튜토리얼에서는 필터링하는 방법을 보여줍니다. DefaultTableModel은 데이터베이스를 자동으로 업데이트하지 않습니다 (그러나 현재 모델도 마찬가지입니다). 모델에 TableModelListener를 추가하기 만하면 데이터베이스를 직접 업데이트 할 수 있습니다. 그렇지 않으면 이것을 지원하기 위해 타사 패키지를 받아야한다고 생각합니다. – camickr

+0

이 모든 것을 수행 할 수있는 타사 패키지에 대해 알고 계십니까? – twodayslate