2012-01-05 3 views
0

사실 저는 ODBC가 필요한 Java 응용 프로그램을 작성하고 있습니다.
나는 데이터베이스 MS 액세스를 생성하고 클래스 연결이 작동되고 있지만 데이터베이스에 테이블을 추가하려고 할 때 예외가 나타납니다java로 odbc 데이터베이스에 액세스하는 방법은 무엇입니까?

java.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access] Impossible de modifier la structure de la table ??personne??. La base de donn?es est en lecture seule. 
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956) 
    at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113) 
    at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3109) 
    at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:337) 
    at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:252) 
    at inventaire.NewClass1.main(NewClass1.java:28) 

데이터베이스는 읽기 전용 모드에 있습니다.

어떻게 데이터베이스를 읽고 쓸 수 있습니까?

+0

자세한 내용은 다음과 같습니다. 유용하며, 사용중인 드라이버와 연결 문자열의 모양과 비슷합니다. 그러나 http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=2691&lngWId=2에는 create table을 포함한 예제가 있습니다. –

답변

2

가능한 경우 ODBC-JDBC 브리지를 피해야합니다.

DSN을 설정하는 동안 기억 설정을 Heres 0

(완료되지는) MS 액세스와 JDBC-ODBC와 함께 작동하는 방법에 대한 예를

http://www.mundayweb.com/progs/jdbc-odbc-tut.php

받는 사람 읽기 전용 드라이버 목록 :

http://devapp.sun.com/product/jdbc/drivers/search_results.jsp?jdbc_version=0&vendor_name=&cert_mode=and&jdbc_driver_type_mode=and&dbms=6&dbms_mode=and&features_mode=and&results_per_page=20&submit=Search

제레는 바와 같이, 일부 드라이버는 명시 적으로 데프해야 이 경우은 ReadOnly = False 일 수 있습니다. 일부 드라이버는 데이터베이스를 편집 할 때 암호가 필요합니다.

안부

+0

나는 그 모든 것을했고 여전히 예외가있다. –

1

연결 문자열에 "ReadOnly=False;"을 추가하십시오. 데이터베이스 파일에 대한 쓰기 권한이 있습니까? ReadOnly가 0으로 설정된 경우 odbc dsn의 고급 옵션을 확인하십시오.

1

Java 응용 프로그램에서 액세스 데이터베이스로 연결하려면 원시 ODBC 브리지를 사용해야합니다. 제어판 -> 관리 도구 -> ODBC 데이터 소스로 이동하여 거기에 액세스 파일을 추가하십시오.

+0

나는 그 모든 것을했고 여전히 동일한 예외가 있습니다 : dababase는 모드 읽기 전용입니다. –

1

데이터베이스에 연결하는 데 사용한 코드를 공유하면 잘못 수행 한 것을 쉽게 파악할 수 있습니다. this 링크를 사용하여 문제를 해결하십시오.

1

ODBC 데이터 원본에 액세스하는 "고급"구성 옵션을 찾아보십시오. 마이크로 소프트 ODBCTEST를 사용하여이 옵션을 사용하여 실험

당신이 "읽기 전용"옵션을 찾아야한다 ...

준다 -

당신은 점점 같은 오류가
With: ReadOnly = 1 

SQLExecDirect: 
    In: hstmt = 0x00613250, 
     szSqlStr = "create table test1 (c1 integer)", cbSqlStr = -3 
    Return: SQL_ERROR=-1 
    stmt: szSqlState = "42000", *pfNativeError = -1809, *pcbErrorMsg = 116, *ColumnNumber = -2, *RowNumber = -2 
    MessageText = "[Microsoft][ODBC Microsoft Access Driver] Cannot modify the design of table 'test1'. It is in a read-only database." 

...

With: ReadOnly = 0 

SQLExecDirect: 
    In: hstmt = 0x00613288, 
     szSqlStr = "create table test1 (c1 integer)", cbSqlStr = -3 
    Return: SQL_SUCCESS=0 

SQL_SUCCESS는 DDL 문이 성공했음을 나타냅니다.

관련 문제