Java 如何使用Spring配置UCanAccess JDBC驱动程序?

Java 如何使用Spring配置UCanAccess JDBC驱动程序?,java,spring,ms-access,jdbc,ucanaccess,Java,Spring,Ms Access,Jdbc,Ucanaccess,每当我尝试使用ODBC驱动程序访问MDB文件时,它都会给我一个错误: error : "[Microsoft][ODBC Driver Manager] Invalid string or buffer length exception" 所以我决定用这个来代替 有没有人有使用Spring配置UCanAccess JDBC驱动程序的经验 我已将UCanAccess.jar放入我的lib文件夹中,并按如下方式进行了配置,但这不起作用: <bean id="dataSource" cl

每当我尝试使用ODBC驱动程序访问MDB文件时,它都会给我一个错误:

error : "[Microsoft][ODBC Driver Manager] Invalid string or buffer length exception"
所以我决定用这个来代替

有没有人有使用Spring配置UCanAccess JDBC驱动程序的经验

我已将UCanAccess.jar放入我的lib文件夹中,并按如下方式进行了配置,但这不起作用:

<bean id="dataSource" 
  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" ref="jdbcDriver" />
    <property name="url" value="jdbc:ucanaccess://C:\\XXXX.mdb" />
    <property name="username" value="" />
    <property name="password" value="" />
</bean>

<bean id="jdbcDriver" class="net.ucanaccess.jdbc.UcanaccessDriver" />


我的开发环境:Spring Framework 3.x,带JdbcTemplate,Windows 7 64位,Microsoft Access 2013。

您必须将所有UCanAccess依赖项放在您的lib文件夹中(请参阅UCanAccess发行版lib文件夹中的jar:jackcess、hsqldb、commons logging和commons lang)。

这对我来说适用于此依赖项

    <dependency>
        <groupId>net.sf.ucanaccess</groupId>
        <artifactId>ucanaccess</artifactId>
        <version>4.0.0</version>
    </dependency>

相关,而非特定于Spring:。
package com.test.learn.java8;

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

public class MsAccessDatabaseConnection {

public static void main(String[] args) {

    // variables
    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;

    // Step 1: Loading driver
    try {
        Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
    } catch (ClassNotFoundException cnfex) {
        System.out.println("Problem in loading or "
                + "registering MS Access JDBC driver");
        cnfex.printStackTrace();
    }

    // Step 2: open db  connection
    try {

        String msAccDB = "C:/Users/vikal/OneDrive/Documents/VikDB.accdb";
        //"D:/WORKSPACE/TEST_WORKSPACE/Java-JDBC/Player.accdb";

        String dbURL = "jdbc:ucanaccess://" + msAccDB;

        // Step 2.A: Create and get connection using DriverManager class
        connection = DriverManager.getConnection(dbURL);

        // Step 2.B: Creating JDBC Statement
        statement = connection.createStatement();

        // Step 2.C: Executing SQL & retrieve data into ResultSet
        resultSet = statement.executeQuery("SELECT * FROM Employee");

        System.out.println("ID\tName\t\t\tAge\tsalary");
         while (resultSet.next()) {
            System.out.println(resultSet.getInt(1) + "\t" +
                    resultSet.getString(2) + "\t" +
                    resultSet.getString(3) + "\t" +
                    resultSet.getString(4));
        }
    } catch (SQLException sqlex) {
        sqlex.printStackTrace();
    } finally {
        try {
            if (null != connection) {

                // cleanup resources, once after processing
                resultSet.close();
                statement.close();

                // and then finally close connection
                connection.close();
            }
        } catch (SQLException sqlex) {
            sqlex.printStackTrace();
        }
    }
}
}