Драйвер JDBC Подключение к MS Access

Я хочу подключить свой файл доступа MS к программе Java GUI, но у меня проблема с подключением ....

У меня Windows 7 64b и ms office 2007. Когда я открыл диспетчер драйверов ODBC на панели управления, я не нашел ни одного драйвера для Microsoft Access (возможно, когда я запустил ODBC, запускается 64-битный ODBC, теперь я думаю, что работает 32-битный ODBC. Я читал это и делаю это: "jdbc-odbc connection for window 7 64 bit machine .. 1. Щелкните правой кнопкой мыши Источник данных (ODBC) .. перейдите к свойствам, измените следующее"

целевой [% SystemRoot% \ SysWOW64 \ odbcad32.exe] запускается в: [% SystemRoot% \ System32]

нажмите ввод и продолжайте от имени администратора: ссылка на источник") Теперь, когда я запускаю ODBC в панели управления, я вижу драйвер снимок экрана

Мой программный код (я пробовал два способа, но у меня такая же ошибка):

        public void Connect() {
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

 //    String DatabaseFile = "D:java/Invertory.mdb";       
//            String DATABASE =
//                    "jdbc:odbc:Driver="
//                    + "{Microsoft Access Driver (*.mdb, *.accdb)};"
//                    + "DBQ=" + DatabaseFile;`enter code here`
 String DATABASE ="jdbc:odbc:Driver= Microsoft Access Driver (*.mdb, *.accdb);DBQ=Invertory.mdb";
           CONEX = DriverManager.getConnection(DATABASE);

        } catch (Exception X) {
          X.printStackTrace();
            //JOptionPane.showMessageDialog(null,e);
        }
    }

ошибка

java.sql.SQLException: [Microsoft] [Диспетчер драйверов ODBC] Имя источника данных не найдено, и драйвер по умолчанию не указан


person artiny    schedule 18.05.2013    source источник
comment
Вы проверили, что компонент ODBC был установлен при установке Access?   -  person William Price    schedule 18.05.2013
comment
Не помню, но сейчас переустанавливаю MS Office 2007.   -  person artiny    schedule 18.05.2013
comment
Это прямой путь, не требующий создания нового системного DSN, вам, вероятно, нужно проверить свой путь к файлу .mdb.   -  person Azad    schedule 18.05.2013
comment
Я использовал это видео: youtube.com/watch?v=Of4LRHOZoII в видео код работает. но для меня нет. Я переустановил все, но он разрешил офис ms, но все еще есть та же ошибка.   -  person artiny    schedule 18.05.2013


Ответы (9)


Используйте драйвер JDBC UCanAccess:

Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://<mdb or accdb file path>",user, password); 
for example: 
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://c:/pippo.mdb");

Итак, для вашего примера это будет Connection conn=DriverManager.getConnection("jdbc:ucanaccess://"+path)

person Anthony O.    schedule 04.12.2014

Если вы используете 64-разрядную версию Windows, вам, вероятно, нужно перейти по этому пути

C: /Windows/SysWOW64/odbcad32.exe

Затем я заметил, что вы используете прямой путь вместо создания нового System DSN, ваш прямой путь верен до тех пор, пока путь к файлу access вы не должны указать полный путь следующим образом:

jdbc: odbc: Driver = драйвер Microsoft Access (* .mdb, * .accdb); DBQ = путь / к / Invertory.mdb "

Чтобы получить путь, вам, вероятно, потребуется использовать java.io.File, у которого метод возвращает полный путь к файлу, см. Пример:

import java.sql.*;
public class TestConnection {
    Connection con ;
    Statement st ;
    ResultSet rs ;
    String db;
    public TestConnection (){
        try{
            String path = new java.io.File("Invertory.mdb").getAbsolutePath();
        db ="JDBC:ODBC:Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ="+path;
            doConnection();
        } catch(NullPointerException ex){
                ex.printStackTrace();
            }

    }

    public void doConnection(){
        try{
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            con = DriverManager.getConnection(db);
            st = con.createStatement();
            rs = st.executeQuery("select * from Invertory");
            while(rs.next()){
                System.out.println(rs.getObject(1));
            }
        }catch(SQLException | ClassNotFoundException ex){
            System.out.println(ex.toString());

        }

    }
    public static void main(String...argS){
        new TestConnection();
    }
}
person Azad    schedule 18.05.2013
comment
Строка DATABASE = jdbc: odbc: Driver = Драйвер Microsoft Access (.mdb, * .accdb); DBQ = C: /Users/Kex/Documents/NetBeansProjects/database_form/database_form/Invertory.mdb; Строка DATABASE = jdbc: odbc: Driver = Драйвер Microsoft Access ( .mdb, * .accdb); DBQ = C: \ Users \ Kex \ Documents \ NetBeansProjects \\ database_form \\ database_form \ Invertory .mdb; Я пробовал два способа, но не работает. После запуска все еще возникает ошибка. Я нахожусь по адресу: C: /Windows/SysWOW64/odbcad32.exe - person artiny; 18.05.2013
comment
Я попытался поместить этот код после и перед строкой DATABASE = jdbc: odbc: Driver = Microsoft Access Driver (.mdb, * .accdb); DBQ = C: / Users / Kex / Documents / NetBeansProjects / database_form / database_form‌ / Invertory. mdb; Строка DATABASE = jdbc: odbc: Driver = Драйвер Microsoft Access (.mdb, * .accdb); и теперь у меня есть кое-что еще: java.lang.NullPointerException, что означает, что я подключился к файлу доступа? - person artiny; 19.05.2013
comment
нет, в этой функции нет: dropbox.com/sh/wfym48e5mkso83p/TzmBVCeUhZ - person artiny; 19.05.2013

Я ответил на аналогичный вопрос введите описание ссылки здесь некоторое время назад.

В основном в то время:

  1. Вы можете подключиться к Ms-Access из 32-битной Java через мост JDBC-ODBC
  2. Вы не могли подключиться к 32-битному драйверу Odbc через JDBC-ODBC из 64-битного java. Появилось сообщение о том, что вы можете подключиться только из 32-битных программ.
  3. Хотя Microsoft предоставляет 64-битный драйвер Ms-Access, он не работает с 64-битным драйвером JDBC-ODBC Java.

С тех пор, похоже, появился новый драйвер JDBC Ms-Access с открытым исходным кодом JDBC-драйвер Ms-Access. Я понятия не имею, насколько это хорошо.

person Bruce Martin    schedule 10.07.2013

Вы просто что-то упустили в своем коде прямо здесь:

db ="JDBC:ODBC:Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ="+path;

Вам нужно добавить {} между Driver= и )=;. Как это ниже

db ="JDBC:ODBC:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="+path;
person KaJasB    schedule 15.12.2013

Проблема в том, что вы должны запускать 32-разрядную версию Java, попробуйте установить последнюю версию JDK, и она будет работать.

Я запускаю его с помощью JDK версии "jdk-7u67-windows-i586.exe"

person Ahmed Salem    schedule 02.09.2014

В 64-битной системе вам следует:

  1. запустить от имени администратора accessdatabaseengine_64.exe
  2. запустите java - 7-64 бит - jre.
person jrjayswal    schedule 25.01.2017

если вы работаете в NETBEANS, то после распаковки файла ucanacess.zip добавьте весь файл jar в путь к классам, используя окно свойств проекта, щелкните вкладку компиляции и добавьте файл jar, затем скомпилируйте и протестируйте приложение.

person Manoj Pandey    schedule 07.05.2017

ПОДКЛЮЧЕНИЕ JDBC-ODBC к MS-ACCESS НЕ РАБОТАЕТ В JDK8. Я решил проблему, установив JDK7 вместе с JDK8 на том же ПК, после установки JDK7 я назначил его в качестве версии JDK для использования в моем проекте в Netbeans следующим образом:

1. НАЖМИТЕ ПРОЕКТ В СПИСКЕ ПРАВОЙ СВОЙСТВА> НАЖМИТЕ СВОЙСТВА

2. НАЖМИТЕ БИБЛИОТЕКИ НА ЛЕВОЕ НАВИГАЦИОННОЕ ДЕРЕВО.

3. НАЖМИТЕ КНОПКУ УПРАВЛЕНИЕ ПЛАТФОРМАМИ> НАЖМИТЕ КНОПКУ ДОБАВИТЬ ПЛАТФОРМУ ...

4. СЛЕДУЙТЕ ЗА WIZARD, НО НЕ ПОКАЗЫВАЕТСЯ СТАНДАРТНОЕ ИЗДАНИЕ JAVA НАЖМИТЕ ДАЛЕЕ

5. ПЕРЕЙДИТЕ К C: \ Program Files (x86) \ Java И ВЫБЕРИТЕ ПАПКУ JDK7> НАЖМИТЕ ДАЛЕЕ

6.ПОЛЕ АВТОЗАПОЛНИТЬ ПРАВИЛЬНУЮ ИНФОРМАЦИЮ ...> ЗАТЕМ НАЖМИТЕ НА ЗАВЕРШИТЬ

7.ВЫБЕРИТЕ ПЛАТФОРМУ JDK ИЗ СПИСКА> НАЖМИТЕ ЗАКРЫТЬ> ОК

8.JDK7 ДОЛЖЕН ПОКАЗАТЬСЯ В ПАКЕТЕ БИБЛИОТЕК.

JDK7 в пакете библиотек Нажмите "Назад в браузере", чтобы вернуться сюда после просмотра изображения. .

С этого момента все должно работать гладко.

Надеюсь, это решит вашу проблему.

Спасибо.

person J. Silvermann    schedule 01.12.2017

person    schedule
comment
Опишите, пожалуйста, и то, что вы делаете. - person Rohit Gupta; 02.08.2015