Pertanyaan DSN yang ditentukan berisi ketidaksesuaian arsitektur antara Driver dan Aplikasi. JAWA


Saya mencoba untuk terhubung ke database yang dibuat oleh MS Access menggunakan Java, tetapi sepertinya saya tidak dapat mengaturnya. Saya menggunakan ODBC dan saya mendapatkan pengecualian ini:

java.sql.SQLException: [Microsoft] [ODBC Driver Manager] DSN yang ditentukan berisi ketidakcocokan arsitektur antara Driver dan Aplikasi

Java saya:

package javaapplication2;

import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;


/**
 *
 * @author Owner
 */
public class JavaApplication2 {

    /**
     * @param args the command line arguments
     * 
     */


    public static void main(String[] args) {
        // TODO code application logic here
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String sourceURL = new String("jdbc:odbc:myDatabase");
            System.out.println(sourceURL);
            Connection dbConnection = DriverManager.getConnection(sourceURL,"admin","");

            Statement myStmt  = dbConnection.createStatement();

            String query = "INSERT INTO People(ID, Name, Surname, Age, Contact, Location, Course) VALUES"
                    + " (1007, 'Elroy', 'Smith', '33', 21366688, 'Somewhere', 'somecourse')";

            myStmt.executeUpdate(query);

            ResultSet results = myStmt.executeQuery("SELECT * FROM People");

            while(results.next())
            {
                System.out.print(results.getString(1));
                System.out.print(results.getString(2));
                System.out.print(results.getString(3));
                System.out.println(results.getString(4));

            }

            results.close();

        }
        catch(ClassNotFoundException cnfe)
        {
            System.out.println(cnfe);
        }
        catch(SQLException sqle)
        {
            System.out.println(sqle);
        }
    }
}

76
2018-01-17 13:56


asal


Jawaban:


Tidak ada yang melakukannya untuk saya. Saya menemukan jawabannya di MSDN. Ada petunjuk untuk itu. Arsitektur dalam kesalahan mengacu pada 32 vs 64 bit. Solusi saya adalah mencari tahu aplikasi saya berjalan di bawah (Access) yang 2010 adalah 32b. Saya menemukan ini dengan melihat di tab Proses Task Manager di mana semua proses 32b memiliki * 32 akhir nama mereka. Seperti yang dikatakan, panel kontrol akan meluncurkan 64 versi bit ODBC dari sini

c:\windows\system32\odbcad32.exe

dan versi 32 bit ada di sini:

c:\windows\sysWOW64\odbcad32.exe (paling mudah untuk menyalin dan menempel ke dialog run)

Jadi saya mengatur DSN dengan nama yang diakhiri dengan 32 dan 64 di masing-masing panel kontrol ODBC yang sesuai (Administrator AKA) yang menunjuk ke hal yang sama. Kemudian, saya memilih / memilih yang benar berdasarkan apakah aplikasi yang menggunakannya adalah 32b atau 64b.


114
2017-09-21 19:59



Anda mendapatkan kesalahan yang sama persis ketika mencoba untuk terhubung ke database MySQL dari MS-Access ketika versi bit (32 vs 64) dari Access tidak cocok

  1. versi bit Driver ODBC yang Anda gunakan
  2. versi bit dari ODBC Manager yang Anda gunakan untuk mengaturnya.

Bagi Anda yang mencoba untuk menghubungkan MS-Access ke MySQL pada sistem Windows 64 bit, saya mengalami penyiksaan belaka yang berusaha membuatnya bekerja dengan MS-Access 2010 dan MS-Access 2013. Akhirnya berhasil, dan berikut ini pelajaran yang saya pelajari di sepanjang jalan:

Saya membeli komputer baru Windows 7, 64 bit, dan saya memiliki aplikasi yang mengandalkan MS-Access menggunakan tabel MySQL.

  1. Saya menginstal versi terbaru MySQL, 5.6, menggunakan paket install All In One. Ini memungkinkan Anda untuk menginstal driver database dan ODBC sekaligus. Itu bagus, tetapi driver ODBC yang diinstal tampaknya 64 bit satu, sehingga tidak akan berfungsi dengan 32 bit MS-Access. Ini juga tampaknya sedikit buggy - tidak pasti pada yang satu itu. Ketika Anda menambahkan DSN baru di ODBC Manager, pengandar ini muncul sebagai "Microsoft ODBC For Oracle". Saya tidak bisa mendapatkan yang ini untuk bekerja. Saya harus menginstal 32 bit satu, yang dibahas di bawah ini.

    • MySQL berfungsi dengan baik setelah instalasi. Saya memulihkan database MySQL aplikasi saya dengan cara biasa. Sekarang saya ingin terhubung dengannya menggunakan MS-Access.


  2. Saya sebelumnya telah menginstal Office 2013, yang saya anggap 64 bit. Tetapi setelah memeriksa versi (File, Account, About Access), saya melihat bahwa itu adalah 32 bit. Baik Access 2010 dan 2013 paling sering dijual sebagai versi 32-bit.

  3. Mesin saya adalah mesin 64 bit. Jadi secara default, ketika Anda pergi untuk mengatur DSN Anda untuk MS-Access, dan pergi dengan cara biasa ke ODBC Manager melalui Control Panel, Administrative Options, Anda mendapatkan manajer ODBC 64 bit. Anda tidak punya cara untuk mengetahui itu! Anda tidak bisa mengatakannya. Ini adalah got besar !! Tidak mungkin untuk mengatur DSN dari sana dan berhasil menghubungkan ke MS Access 32 bit. Anda akan mendapatkan kesalahan yang ditakuti:

    "dsn yang ditentukan berisi ketidakcocokan arsitektur ..."

  4. Anda harus mengunduh dan menginstal driver ODBC 32 bit dari MySQL. Saya menggunakan versi 3.5.1

    http://dev.mysql.com/downloads/connector/odbc/3.51.html

  5. Anda harus memberi tahu ODBC Manager di Control Panel untuk melakukan pendakian dan sebaliknya harus secara eksplisit meminta ODBC Manager 32 bit dengan perintah ini dijalankan di Start, Command prompt:

    c: \ windows \ sysWOW64 \ odbcad32.exe

    Saya membuat pintasan ke ini di desktop saya. Dari sini, bangun DSN Anda dengan manajer ini. Poin penting: BUILD MEREKA SEBAGAI SISTEM DSNS, BUKAN PENGGUNA DSN! Ini membuat saya tersandung untuk sementara.

    By the way, versi 64 bit dari ODBC Manager juga dapat dijalankan secara eksplisit sebagai:

    c: \ windows \ system32 \ odbcad32.exe

  6. Setelah Anda menginstal Driver ODBC 32-bit dari MySql, ketika Anda mengklik Tambah di ODBC Manager Anda akan melihat 2 driver terdaftar. Pilih "MySQL ODBC 5.2 ANSI Driver". Saya tidak mencoba driver UNICODE.


Itu berhasil. Setelah Anda mendefinisikan DSN Anda dalam manajer ODBC 32 bit, Anda dapat terhubung ke MySQL dengan cara biasa dari dalam Access - Data Eksternal, ODBC Database, Tautan ke Database, pilih Sumber Data Mesin, dan DSN yang Anda buat ke MySQL Anda database akan ada di sana.


23
2018-06-22 01:36



Ada ketidakcocokan arsitektur. Driver JDBC Anda dan JDK Anda harus memiliki arsitektur yang sama. Jika Anda menggunakan Driver 32bit dan JDK Anda adalah 64 bit, Anda akan mendapatkan kesalahan itu.

Lihat ini

Fix: Tergantung pada arsitektur Anda.

Anda membutuhkan driver 64-bit jika Java Anda 64-bit.

Unduh: http://www.microsoft.com/downloads/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=id


8
2018-01-17 14:07



Secara default, Command Prompt terhubung ke System32. Jalankan perintah 64-bit, mis., C:\WINDOWS\SYSWOW64\CMD.EXE. Dalam hal itu, kompilasi dan jalankan aplikasi java Anda.


2
2017-07-08 05:28



Masalah yang Anda hadapi mungkin karena: Anda memiliki Office 32 bit dan Command Prompt 64 bit. Untuk mengatasi masalah Anda harus mengikuti 2 langkah:

  1. Buka ODBC Manager untuk DSN menggunakan: C: \ Windows \ SysWOW64 \ odbcad32.exe Ini akan membuka ODBC Data Administrator untuk versi 32 bit dan Anda akan melihat semua driver database.

  2. Setelah ini, Anda perlu membuka command prompt 32 bit menggunakan: C: \ Windows \ SysWOW64 \ cmd.exe Ini akan membuka command prompt versi 32 bit. Dalam CMD baru ini, silakan mengkompilasi ulang program Java Anda dan jalankan program Anda.

Semoga ini bisa membantu.


1
2017-12-26 17:40



Sedikit terlambat, tetapi karena saya mengalami masalah yang sama, dalam skenario Anda, saya pikir saya akan menambahkan solusi saya.

Saya memiliki Windows 7 (64-bit) dan Office 2010 (32-bit). Saya mencoba dengan string koneksi DSN-less:

jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=I:/TeamForge/ORS/CTFORS.accdb

dan saya mencoba dengan koneksi DSN, menggunakan kedua versi System32 dan SysWOW64 Admin ODBC, dan tidak ada yang berfungsi.

Apa yang akhirnya berhasil, adalah mencocokkan versi bit Java dengan versi sedikit Office. Setelah saya melakukan itu, saya bisa menggunakan mode koneksi DSN atau DSN kurang, tanpa ribut-ribut.


1
2018-05-18 22:13



Saya melihat jawaban ini dan itu berhasil bagi saya. https://msdn.microsoft.com/en-us/library/ms712362%28v=vs.85%29.aspx

Setelah Anda menginstal driver ODBC dari program pengaturan pengemudi, Anda dapat menentukan satu atau lebih sumber data untuk itu. Nama sumber data (DSN) harus memberikan deskripsi data yang unik; misalnya, Payroll atau Hutang Akun. Pengguna dan sumber data sistem yang ditetapkan untuk semua driver yang terinstal saat ini tercantum dalam tab DSN Pengguna atau Sistem DSN dari kotak dialog Administrator Sumber Data ODBC. Sumber data file dalam direktori yang diberikan tercantum dalam tab File DSN; direktori yang ditampilkan dimasukkan dalam kotak Look in di tab File DSN. System_CAPS_noteNote

Untuk mengelola sumber data yang terhubung ke driver 32-bit di bawah platform 64-bit, gunakan c: \ windows \ sysWOW64 \ odbcad32.exe. Untuk mengelola sumber data yang terhubung ke driver 64-bit, gunakan c: \ windows \ system32 \ odbcad32.exe. Di Alat Administratif pada sistem operasi Windows 8 64-bit, ada ikon untuk kotak dialog Administrator Sumber Data ODBC 32-bit dan 64-bit.

Jika Anda menggunakan odbcad32.exe 64-bit untuk mengkonfigurasi atau menghapus DSN yang terhubung ke driver 32-bit, misalnya, Driver melakukan Microsoft Access (* .mdb), Anda akan menerima pesan galat berikut:

DSN yang ditentukan berisi ketidaksesuaian arsitektur antara Driver dan Aplikasi

Untuk mengatasi kesalahan ini, gunakan odbcad32.exe 32-bit untuk mengonfigurasi atau menghapus DSN.

Sumber data mengaitkan driver ODBC tertentu dengan data yang ingin Anda akses melalui driver itu. Misalnya, Anda dapat membuat sumber data untuk menggunakan driver ODBC dBASE untuk mengakses satu atau lebih file dBASE yang ditemukan di direktori tertentu pada hard disk atau drive jaringan Anda. Dengan menggunakan Administrator Sumber Data ODBC, Anda dapat menambah, memodifikasi, dan menghapus sumber data, seperti yang dijelaskan dalam tabel berikut.


1
2017-12-07 11:01



Sudahkah Anda membuat DSN pertama di Control Panel> Administrative Tools> ODBC> Sistem DSN. Nama itu sama dengan "myDatabase" dan jika saya meminta untuk mencari file database / akses tentukan jalur menggunakan opsi browse. Setelah DSN Anda berhasil dibuat, Anda akan dengan mudah dapat mengakses ur DB.


0
2018-01-17 14:09