有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java UCanaAccess:用户缺少权限或找不到对象

我正在尝试进行一些Ucanaccess实践,用java管理一些数据库。我遇到了一个我不知道如何解决的错误

我有一个名为access中的用户的表:

enter image description here

自动编号,短文本,短文本,编号

所以我要做的是检查给定的用户和密码是否正确,如果正确,则更改“CONEXIONES”。但我得到了这个错误:

Exception in thread "main" net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.0.1 usuario no tiene privilegios suficientes o objeto no encontrado: Z_19MIKE95

at net.ucanaccess.jdbc.UcanaccessStatement.executeUpdate(UcanaccessStatement.java:221)
at Ej4.Ej4.main(Ej4.java:32)

英文意思是:

UCAExc:::4.0.1 user lacks of privileges or object not found Z_19MIKE95

所以我的代码是:

    Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
    String url="jdbc:ucanaccess://C:/Users/PC-Mikel/Desktop/Uni/Distribuidos/P4Ejer4.accdb";
    Connection connection = DriverManager.getConnection(url);
    Statement statement = connection.createStatement();
    String sql,user,pass;
    System.out.println("Introduzca Usuario");
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    user = br.readLine();
    System.out.println("Introduzca Contraseña");
    BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
    pass = br2.readLine();
    sql= "UPDATE USERS SET CONEXIONES = 1 WHERE USUARIO = "+user+" AND CONTRASENA = " +pass;
    System.out.println(sql);
    int nrows = statement.executeUpdate(sql);

代码继续,但只包含一些条件和查询


共 (2) 个答案

  1. # 1 楼答案

    在我的情况下,结果证明keepMirror=C:/db/mirrorName连接选项是坏人。。我移除了它,它工作了

  2. # 2 楼答案

    动态SQL正在创建一个将数据值与列名混淆的查询。您应该使用PreparedStatement参数化查询,例如

    sql= "UPDATE USERS SET CONEXIONES = 1 WHERE USUARIO = ? AND CONTRASENA = ?";
    PreparedStatement pstmt = connection.prepareStatement(sql);
    pstmt.setString(1) = user;
    pstmt.setString(2) = pass;
    int nrows = pstmt.executeUpdate();