java MS ACCESS jdbc.odbc 连接。未找到数据源名称/未指定默认驱动程序?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/10385648/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 00:48:45  来源:igfitidea点击:

MS ACCESS jdbc.odbc connection. data source name not found/No default driver specified?

javasqldatabasejdbc-odbc

提问by Ross Borchers

I'm trying to study for a basic SQL test at school but unfortunately I copied the class that we are supposed to use into a project on my pc and I am getting the following error:

我正在尝试在学校学习基本的 SQL 测试,但不幸的是,我将应该使用的课程复制到我的电脑上的一个项目中,但出现以下错误:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

java.sql.SQLException: [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序

package Question1;

// Your name, Q 1
import java.sql.*;
import java.io.*;
import javax.swing.*;

public class GreenWood
{
 // Set up database connection
   private static final String DATABASE_FILE_NAME = "WoodDB.mdb";
   private static final String DRIVER = "jdbc:odbc:DRIVER=" +
   "{Microsoft Access Driver (*.mdb)};" +
   "DBQ=" + new File (DATABASE_FILE_NAME).getAbsolutePath ();
  static
  {
     try
     {
        Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
     }
         catch (ClassNotFoundException e)
        {
           System.out.println ("Class not found");
           e.printStackTrace ();
        }
  }


  private Connection dbcon;
  private BufferedReader keyb = new BufferedReader (new InputStreamReader (System.in));

   public GreenWood ()
  {
     System.out.println ("WoodDB Connection");
     try
     {
        dbcon = DriverManager.getConnection (DRIVER);
        Statement stmt = dbcon.createStatement ();
        System.out.println ("Connection successful\n");

        char choice = ' ';
        do
        {

         //Prints options for user input

           choice = keyb.readLine ().toUpperCase ().charAt (0);
           System.out.println (" ");
           switch (choice)
           {
             //calls query methods based on user input

           }
        }
        while (choice != 'X');
        dbcon.close ();
        System.out.println ("Done");
        Thread.sleep (1000);
        System.exit (0);
     } // try
         catch (Exception e)
        {
        // process exceptions here
           System.out.println ("Connection unsuccessful");
           e.printStackTrace ();
           System.out.println (e.toString ());
        }
  } // HoutSoorte constructor

  //Query Methods
  //Main creates new instance of GreenWood

my WoodDB database is located in the root project directory.

我的 WoodDB 数据库位于项目根目录中。

I Have done some troubleshooting and I believe that the problem is the URL of the driver location;

我已经做了一些故障排除,我认为问题是驱动程序位置的 URL;

dbcon = DriverManager.getConnection (DRIVER);

DRIVER being:

驱动程序是:

private static final String DRIVER = "jdbc:odbc:DRIVER=" +
   "{Microsoft Access Driver (*.mdb)};" +
   "DBQ=" + new File (DATABASE_FILE_NAME).getAbsolutePath ();

After about an hour of research I'm still just as confused as I was. If anyone can help this nub programmer(me) by explaining the problem in baby words and how I can fix it, it would be ever appreciated.

经过大约一个小时的研究,我仍然和以前一样困惑。如果有人可以通过用婴儿话解释问题以及我如何解决它来帮助这个 nub 程序员(我),那将不胜感激。

回答by Pedro

Try using 32-bit JVM. I am getting the same error message when trying to connect from 64-bit JVM.

尝试使用 32 位 JVM。尝试从 64 位 JVM 连接时,我收到相同的错误消息。

回答by coder

Try the following if it works:

如果有效,请尝试以下操作:

For 64 bit system, Goto: C:\windows\sysWOW64. For 32 bit system, Goto: C:\windows

对于 64 位系统,转到:C:\windows\sysWOW64。对于 32 位系统,转到:C:\windows

There is an executable called odbcad32.exe.

有一个名为 odbcad32.exe 的可执行文件。

Run this exe as administrator to gain access to all the ODBC drivers that come with Microsoft Office, etc.

以管理员身份运行此 exe 以访问 Microsoft Office 等附带的所有 ODBC 驱动程序。

Create data source named my_data_source and mention the connection string as:

创建名为 my_data_source 的数据源并将连接字符串提及为:

Connection con = DriverManager.getConnection("jdbc:odbc:my_data_source");

Connection con = DriverManager.getConnection("jdbc:odbc:my_data_source");

Above solution worked in my case.

以上解决方案适用于我的情况。

Please refer: Java Connectivity with MS Accessfor details.

有关详细信息,请参阅:Java Connectivity with MS Access

回答by user1335794

try to use full pathname of DATABASE_FILE or copy it into source directory.

尝试使用 DATABASE_FILE 的完整路径名或将其复制到源目录中。