You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Java登录界面时出现UCAExc:::5.0.1 EXT_DATE_TIME权限/类型错误

登录界面Java代码运行抛出UCAExc:::5.0.1 type not found or user lacks privilege: EXT_DATE_TIME异常排查

我按照教程编写Java登录界面代码,运行时抛出UCAExc:::5.0.1 type not found or user lacks privilege: EXT_DATE_TIME异常,教程中的代码可正常运行,但我的代码出现该问题。

我的代码

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
Connection con = null;
    PreparedStatement pst = null ; 
    ResultSet rs = null;

try{
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
con = DriverManager.getConnection("jdbc:ucanaccess://C:\\Users\\Morgan\\Documents\\Database1.accdb");
String sq1 = "select * from user_account where username = '"+ tfusr.getText() +"' and password = '"+ tfpwsd.getText() +"' ";
pst = con.prepareStatement(sq1);
rs = pst.executeQuery();
if(rs.next())
{
JOptionPane.showMessageDialog(null,"Login successfull");
}
else {
JOptionPane.showMessageDialog(null , "Login Failed");
}
}
catch(Exception e){
    System.out.println(e);
}
}

项目依赖

我的项目依赖包含ucanaccess-5.0.1.jar、jackcess-3.0.1.jar及相关辅助包(截图显示完整依赖列表)


问题排查与解决办法

  • 依赖版本不兼容/缺失:UCanAccess 5.0.1对依赖包版本有严格要求,单独引入零散jar包容易出现版本不匹配。建议直接下载UCanAccess官方提供的完整依赖包(包含所有必需的jackcess、commons系列等jar),替换现有项目中的零散依赖,确保所有组件版本适配。
  • 数据库字段类型问题:检查目标Access数据库Database1.accdb的user_account表中是否存在EXT_DATE_TIME类型的字段。UCanAccess对该扩展类型的支持需要完整依赖包支持,若不需要该类型,可将字段改为普通DateTime类型。
  • 修复SQL注入漏洞:当前代码直接拼接用户输入到SQL语句中,存在严重安全风险,同时也可能引发语法异常。改用PreparedStatement参数绑定写法:
    String sql = "select * from user_account where username = ? and password = ?";
    pst = con.prepareStatement(sql);
    pst.setString(1, tfusr.getText());
    pst.setString(2, tfpwsd.getText());
    rs = pst.executeQuery();
    
  • 驱动加载优化:Java 6及以上版本无需手动调用Class.forName加载驱动,可移除该语句,确保依赖包已正确添加到项目类路径中。

内容的提问来源于stack exchange,提问作者Morgan Joffe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:34:57