2012-01-05 12 views
0

実際に私はODBCを必要とするJavaアプリケーションに取り組んでいます。
は、私はデータベースのMS Accessを作成し、クラスの接続が機能していますが、私は、データベース内のテーブルを追加しようとすると、例外が表示されます。odbcデータベースにjavaでアクセスするには?

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を設定して、覚えておいて、MSアクセス(その完全ではない)

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

とJDBC、ODBCで動作する方法の例相続人0

に読み取り専用に設定しましたドライバリスト:

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

jereが示されているように、いくつかのドライバは、明示的にデフする必要がありますこの場合、&を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文が成功したことを示します。

関連する問題