web-dev-qa-db-ja.com

JavaアクセスDB接続

Db(MS Access 2010)に接続してプロジェクトを作成しようとしています。このチュートリアルを使用しています CodeProjectで

import Java.sql.*;

public class DbAccess
{
    public static void main(String[] args)
    {
        try
        {
            Class.forName("Sun.jdbc.odbc.JdbcOdbcDriver");
            String database = 
              "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=myDB.mdb;";
            Connection conn = DriverManager.getConnection(database, "", "");
            Statement s = conn.createStatement();

            // create a table
            String tableName = "myTable" + String.valueOf((int)(Math.random() * 1000.0));
            String createTable = "CREATE TABLE " + tableName + 
                                 " (id Integer, name Text(32))";
            s.execute(createTable); 

            // enter value into table
            for(int i=0; i<25; i++)
            {
              String addRow = "INSERT INTO " + tableName + " VALUES ( " + 
                     String.valueOf((int) (Math.random() * 32767)) + ", 'Text Value " + 
                     String.valueOf(Math.random()) + "')";
              s.execute(addRow);
            }

            // Fetch table
            String selTable = "SELECT * FROM " + tableName;
            s.execute(selTable);
            ResultSet rs = s.getResultSet();
            while((rs!=null) && (rs.next()))
            {
                System.out.println(rs.getString(1) + " : " + rs.getString(2));
            }

            // drop the table
            String dropTable = "DROP TABLE " + tableName;
            s.execute(dropTable);

            // close and cleanup
            s.close();
            conn.close();
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }
}

しかし、奇妙な例外が発生します:Java.sql.SQLException:[Microsoft] [????????? ????????? ODBC] ???????? ?????? ?? ?????? ? ?? ?????? ???????、???????????? ?? ?????????

Java.sql.SQLException:[Microsoft] [????????? ????????? ODBC] ???????? ?????? ?? ?????? ? ?? ?????? ???????、???????????? ?? ????????? Sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.Java:6956)at Sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.Java:7113)at Sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.Java:3072 )Sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.Java:323)at Sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.Java:174)at Java.sql.DriverManager.getConnection(DriverManager.Java:579) Java.sql.DriverManager.getConnection(DriverManager.Java:221)でdbaccess.DbAccess.main(DbAccess.Java:28)で

私はそれをグーグルで検索し、次のようなスタックで他の質問を見つけます: スタック投稿

だから私は* .mdbファイルを接続するのを助けることができるすべてのODBCドライバーを追加します。しかし、良いヘペンドは何もありません。(

それは何ですか?AccessDBに接続する方法は?

5
user2167382

コードをEclipseに貼り付けて正常に実行されたため、コードに根本的な問題はありません。私が行った唯一の変更は、データベースファイルへのパスを指定することでした。つまり、を使用する代わりに

_DBQ=myDB.mdb
_

使った

_DBQ=C:\\__tmp\\myDB.mdb
_

また、32ビットJVM(32ビットコンピューター)で実行していました。だから、私の提案は

  1. 私が行ったように、_.mdb_ファイルへの完全なパスを指定してみてください。

  2. それでもエラーが発生する場合は、Java環境をチェックして、アプリケーションが64ビットJVMで実行されているかどうかを確認してください。実行されている場合、Driver={Microsoft Access Driver (*.mdb)}は機能しません。古いJet ODBCドライバーの64ビットバージョンはありません。その場合、2つのオプションがあります。

    私。 32ビットJVMで実行するようにアプリケーションを構成する、または

    ii。 64ビットバージョンのAccessデータベースエンジンを ここ からダウンロードしてインストールし、Driver={Microsoft Access Driver (*.mdb, *.accdb)}を使用します。

3
Gord Thompson

JDBC-ODBCブリッジがJava 8から削除されたので、より良いアプローチは CanAccess JDBCドライバーを使用することです。詳細については、を参照してください。

Java ODBCなし)からのA​​ccessデータベースの操作

2
Gord Thompson