Java访问数据库连接 [英] Java Access DB Connection

查看:113
本文介绍了Java访问数据库连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用连接到db(MS Access 2010)的项目
我使用本教程

I try to make project with connection to db (MS Access 2010) I use this tutorial on CodeProject.

import java.sql.*;

public class DbAccess
{
    public static void main(String[] args)
    {
        try
        {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String database = 
              "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=myDB.mdb;";
            Connection conn = DriverManager.getConnection(database, "", "");
            Statement s = conn.createStatement();

            // create a table
            String tableName = "myTable" + String.valueOf((int)(Math.random() * 1000.0));
            String createTable = "CREATE TABLE " + tableName + 
                                 " (id Integer, name Text(32))";
            s.execute(createTable); 

            // enter value into table
            for(int i=0; i<25; i++)
            {
              String addRow = "INSERT INTO " + tableName + " VALUES ( " + 
                     String.valueOf((int) (Math.random() * 32767)) + ", 'Text Value " + 
                     String.valueOf(Math.random()) + "')";
              s.execute(addRow);
            }

            // Fetch table
            String selTable = "SELECT * FROM " + tableName;
            s.execute(selTable);
            ResultSet rs = s.getResultSet();
            while((rs!=null) && (rs.next()))
            {
                System.out.println(rs.getString(1) + " : " + rs.getString(2));
            }

            // drop the table
            String dropTable = "DROP TABLE " + tableName;
            s.execute(dropTable);

            // close and cleanup
            s.close();
            conn.close();
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }
}

但我得到奇怪的异常: java.sql.SQLException:[Microsoft] [ ?? ODBC] ? ?? ? ? ?? ?其中, ??

But i get strange Exception : java.sql.SQLException: [Microsoft][????????? ????????? ODBC] ???????? ?????? ?? ?????? ? ?? ?????? ???????, ???????????? ?? ?????????


java.sql.SQLException:[Microsoft] [??? ?? ODBC]
?? ? ? ?? ?其中, ?? ?? at
sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)at
sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)at
sun.jdbc .odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3072)at
sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver .java:174)at
java.sql.DriverManager.getConnection(DriverManager.java:579)at
java.sql.DriverManager.getConnection(DriverManager.java:221)at
dbaccess。 DbAccess.main(DbAccess.java:28)

java.sql.SQLException: [Microsoft][????????? ????????? ODBC] ???????? ?????? ?? ?????? ? ?? ?????? ???????, ???????????? ?? ????????? at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956) at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113) at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3072) at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323) at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174) at java.sql.DriverManager.getConnection(DriverManager.java:579) at java.sql.DriverManager.getConnection(DriverManager.java:221) at dbaccess.DbAccess.main(DbAccess.java:28)

我在google上找到其他问题,像这样: Stack Post

I google it and find other questions on Stack like this : Stack Post

因此添加所有ODBC驱动程序,可以帮助我连接* .mdb文件。但是没有什么好东西。(

So i add all ODBC drivers that can help me connect *.mdb file. But nothing good hepend.(

它是什么,如何连接到Access DB?

What is it and how connect to Access DB?

推荐答案

你的代码没有什么根本的错误,因为我把它粘贴到Eclipse,它运行正常。我做的唯一的更改是指定数据库文件的路径,即,而不是使用

There is nothing fundamentally wrong with your code because I pasted it into Eclipse and it ran fine. The only change I made was to specify the path to the database file, i.e., instead of using

DBQ=myDB.mdb

我使用了

DBQ=C:\\__tmp\\myDB.mdb

我也是在一个32位的JVM下运行的(在32位计算机上)。

I was also running it under a 32-bit JVM (on a 32-bit computer). So, my suggestions would be


  1. 尝试指定 .mdb 文件的完整路径,

如果您仍然遇到错误,请检查您的Java环境,看看您的应用程序是否正在64位JVM中运行,如果是, 驱动程序= {Microsoft Access驱动程序(* .mdb)} 将不工作:没有64位版本的旧Jet ODBC驱动程序在这种情况下, :

If you still get an error, check your Java environment to see if your application is running in a 64-bit JVM. If it is, then Driver={Microsoft Access Driver (*.mdb)} will not work: there is no 64-bit version of the older Jet ODBC driver. In that case you have two options:

i。将您的应用程序配置为在32位JVM或

i. Configure your application to run in a 32-bit JVM, or

中运行。从此处下载并安装64位版本的Access数据库引擎,然后使用 Driver = {Microsoft Access Driver(* .mdb,* .accdb)}

ii. Download and install the 64-bit version of the Access Database Engine from here, and then use Driver={Microsoft Access Driver (*.mdb, *.accdb)}.

这篇关于Java访问数据库连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆