首页 > 解决方案 > JDK7 运行时错误:未找到数据源名称且未指定默认驱动程序

问题描述

我收到运行时错误

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

当我尝试使用给定的代码登录时。下面是代码。我正在使用 Java JRE 7 来编译它。任何人都可以让我知道有什么问题吗?我省略了大部分代码。完整代码链接:https ://codeshare.io/5gNyZw 。

try
{
    String database="StegoKeys.mdb";
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    String url="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + database + ";PWD=cegospdv";
    Connection con=DriverManager.getConnection(url);

    String sql="select * from keys";
    PreparedStatement ps=con.prepareStatement(sql);

    ResultSet rs=ps.executeQuery();
    while(rs.next())
    {
       if(txtKey.getText().equals(rs.getString("key")))
           {
            id=rs.getString("uname");
            if(txtname.getText().equals(id))
            {
                int stat=Integer.parseInt(rs.getString("status"));
                flag=1;
                if(stat==1)
                {
                      button1.setEnabled(true);
                      button2.setEnabled(true);
                      btnadminset.setVisible(true);
                      txtKey.setEnabled(false);
                      btnLogin.setEnabled(false);
                }                   
                else
                {
                      button1.setEnabled(true);
                      txtname.setEnabled(false);
                      txtKey.setEnabled(false);
                      btnLogin.setEnabled(false);
                }
            }
            //System.out.println(id+" in MainStego");
            con.close();
            break;
        }               
    }
    if(flag==0)
    {
        JOptionPane.showMessageDialog(this,"Invalid User & Key");
    }
   }
 catch(Exception ex)
 {
    JOptionPane.showMessageDialog(this,"Run Time Error");

标签: javasqlms-accessjava-7jdbc-odbc

解决方案


您的错误最可能的原因是您在 64 位 JVM(Java 虚拟机)下运行 Java 代码。Driver={Microsoft Access Driver (*.mdb)}仅适用于 32 位应用程序。

您的选择是:

  1. 下载并安装适用于 Java 7 的 32 位 JRE(Java 运行时环境)并使用它来运行您的代码。
  2. 下载并安装 64 位版本的Access 数据库引擎,然后Driver={Microsoft Access Driver (*.mdb, *.accdb)}在 64 位 JVM 下运行的代码中使用。
  3. 使用UCanAccess代替 JDBC-ODBC 桥和 Access ODBC 驱动程序

推荐阅读