Использовать базу данных в Java-приложении - PullRequest
0 голосов
/ 20 марта 2011

Я новичок в программировании приложений на Java.

Я создал приложение базы данных на Java.Я использую базу данных доступа MS с драйвером JDBC-ODBC.Код создания соединения моего приложения приведен ниже:

private void connection() {

    try {
        String driverurl = "jdbc:odbc:dharti_data";
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        con = DriverManager.getConnection(driverurl,"","");
    } catch (SQLException e) {
        JOptionPane.showMessageDialog(frm,e.getSQLState(),"Database Access Error",JOptionPane.ERROR_MESSAGE);
    } catch (Exception e) {         
        JOptionPane.showMessageDialog(null,e.getMessage(),"Database Access Error",JOptionPane.ERROR_MESSAGE);
    }
}

Этот код работает отлично, но этот код использует имя источника данных, которое я объявил в Панели управления> Администрирование> Источники данных (ODBC)> Системный DSN> Добавить данныеИсточник, с драйвером Microsoft Access (* .mdb).

Но когда я запускаю приложение на другом ПК, оно не может запуститься и вместо этого генерирует ошибку базы данных.

Я знаючто я могу объявить драйвер в Data Sources (ODBC)> System DSN, и тогда он запустится.Но я не хочу делать это на каждой машине, на которой я запускаю свое приложение.Мое приложение должно автоматически устанавливать соединение с базой данных.Как я могу заставить мое приложение не требовать имени источника данных?

Ответы [ 4 ]

1 голос
/ 20 марта 2011
    String filename = "C:/Lab/northwind.mdb"; // this the path to mdb file
    String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
    database+= filename.trim() + ";DriverID=22;READONLY=true}"; // add on to the end 
    // now we can get the connection from the DriverManager
    Connection con = DriverManager.getConnection( database ,"",""); 
0 голосов
/ 20 марта 2011

Я использовал sun.jdbc.odbc.JdbcOdbcDriver для подключения к базе данных MS Access.Имейте это в той же директории, что и файл класса, и это должно работать.Хотя он должен быть уже установлен в Java SDK.

Это пример тренировочной программы, которую я сделал недавно.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

System.out.println("Driver loaded");

// Establish a connection
Connection connection = DriverManager.getConnection
("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=(MS ACCESS DATABASE DIRECTORY)");

System.out.println("Database connected");

// Create a statement
Statement statement = connection.createStatement();

// Execute a statement
ResultSet resultSet = statement.executeQuery
  ("select f_name, l_name from Test where f_name = 'Luke'"); // For example

// Iterate through the result and print the results
while (resultSet.next())
  System.out.println(resultSet.getString(1) + "\t" + resultSet.getString(2) );
0 голосов
/ 20 марта 2011

Вам потребуется программно изменить следующие разделы реестра:

HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ ODBC \ ODBC.INI и
HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC \ ODBC.INI \ ODBC

Ice Engineering предлагает API для публичного домена, который позволяет вам это делать. Помимо jar-файлов у него есть DLL, которую вы должны поставлять вместе с вашим приложением. Это довольно просто и будет работать.

Чтобы лучше понять, что вам нужно делать, используйте regedit, чтобы увидеть значения перед установкой чего-либо, затем вручную установите базу данных ODBC и, наконец, сравните новые значения со старыми.

0 голосов
/ 20 марта 2011

Я не уверен, что получил это, но вы отправляете драйвер jdbc вместе с вашим приложением? Он должен быть в вашем classpath и должен быть развернут вместе с вашим приложением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...