Tomcat 7. Как указать ресурс базы данных при подключении к Microsoft Access - PullRequest
3 голосов
/ 06 декабря 2011

Я знаю, как с определенным пулом соединения источника данных с сервером MySQL в Tomcat 7 добавить

<Resource type="javax.sql.DataSource"
        name="jdbc/TestDB"
        factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/mysql"
        username="mysql_user"
        password="mypassword123"
/>

к моему META-INF/context.xml,

  1. Может кто-нибудь показать мне, каксделать это для Microsoft Access?
  2. Нужен ли мост JDBC - ODBC для подключения моего веб-приложения на Java к Microsoft Access?

ОБНОВЛЕНИЕ :Это моя попытка, но я столкнулся с SQLException

<Resource  type="javax.sql.DataSource"
           name="jdbc-odbc/qtl"
           maxActive="100"
           maxIdle="30"
           maxWait="10000"
           factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
           driverClassName="sun.jdbc.odbc.JdbcOdbcDriver"
           url="jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=/Users/KingdomHeart/resources/db.mdb"               
           />

Когда я это сделал, я получил WARNING: Unexpected exception resolving reference java.sql.SQLException: sun.jdbc.odbc.JdbcOdbcDriver

ОБНОВЛЕНИЕ 2: : Я пыталсянаписать отдельную программу для подключения к Microsoft Access db.Я получил java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver Вот мой код.Должно быть, мне нужен драйвер jar в моем классе, не так ли?

public static void main(String[] args) {
    try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String fileName = "/Users/KingdomHeart/resources/MyTable.mdb";
        String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
        database += fileName + ";DriverID=22;READONLY=true";
        Connection con = DriverManager.getConnection(database, "", "");
        System.out.println("here");
    } catch (SQLException ex) {
        Logger.getLogger(TestJdbcOdbc.class.getName()).log(Level.SEVERE, null, ex);
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(TestJdbcOdbc.class.getName()).log(Level.SEVERE, null, ex);
    }
}

1 Ответ

3 голосов
/ 06 декабря 2011

Я бы использовал URL-адрес, подобный следующему:

jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:\\path\\your-access-database.mdb

Класс драйвера JDBC - sun.jdbc.odbc.JdbcOdbcDriver (по крайней мере, так было, когда я последний раз использовал его; это было в 2004 году).

Я предпочитаю этот стиль, потому что он исключает этап создания источника данных ODBC.Он сохраняет точное местоположение файла внутри развертывания Java.

Да, вам нужен мост JDBC-ODBC (если вы не купили коммерческий драйвер JDBC).

Вы должны знать о подводных камнях использования Access в многопользовательской среде:

http://msdn.microsoft.com/en-us/library/aa167840(v=office.11).aspx

Моя личная рекомендация - использовать MySQL или PostgreSQL вместо Access.

Вот еще кое-что, что вы можете прочитать о настройке источника данных JNDI в Tomcat.:

http://craicpropagation.blogspot.com/2009/02/how-to-use-same-jndi-resource-name-on.html

...