JDK7运行时错误:未找到数据源名称且未指定默认驱动程序

时间:2018-04-29 11:28:01

标签: java sql ms-access java-7 jdbc-odbc

我遇到了运行时错误

  

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

当我尝试使用给定的代码登录时。下面是代码。我正在使用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");

1 个答案:

答案 0 :(得分:0)

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

您的选择是:

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