java - 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");
解决方案
您的错误最可能的原因是您在 64 位 JVM(Java 虚拟机)下运行 Java 代码。Driver={Microsoft Access Driver (*.mdb)}
仅适用于 32 位应用程序。
您的选择是:
- 下载并安装适用于 Java 7 的 32 位 JRE(Java 运行时环境)并使用它来运行您的代码。
- 下载并安装 64 位版本的Access 数据库引擎,然后
Driver={Microsoft Access Driver (*.mdb, *.accdb)}
在 64 位 JVM 下运行的代码中使用。 - 使用UCanAccess代替 JDBC-ODBC 桥和 Access ODBC 驱动程序
推荐阅读
- bash - perl 在单个 bash 脚本中组合 perl one 衬里和脚本
- prestashop-1.7 - 无法更改主题 PrestaShop 1.7.3.1
- php - laravel 5.6 默认身份验证中的自定义字段导致错误
- javascript - 如何创建使用其他列数据的数据表列?
- mysql - Angular + NodeJS + mySQL 如何设置?
- c++ - 数组中的元素异常变化
- python - 从 .py 文件访问 StringProperty 到 .kv 文件中的 TextInput
- angular - 在 Angular 4 Jasmin 测试中,我因意外的测试用例而被抛出 [object ErrorEvent]
- uitableview - 使用 UITableViewAutomaticDimension 根据 UITableViewCell 中的文本长度设置标签的宽度和高度
- css - 固定剪裁元素的层次结构