【问题标题】:user lacks privilege or object not found: XXXX用户缺少权限或找不到对象:XXXX
【发布时间】:2019-02-23 13:04:55
【问题描述】:

当我尝试将数据放入数据库时​​出现此错误 这是我的注册功能

void signup() throws SQLException {

          String name=signupForm.getSignUpName().getText();
           String password=new String(signupForm.getSignUpPassword().getPassword());


          System.out.println(name);
          System.out.println(password);
        conn= getConnection();
        statement = conn.createStatement();
        query = "INSERT INTO student_signup(student_password) VALUES"+"("+password+")";
          System.out.println(name);

                     rs=statement.executeQuery(query);



            statement.close();
            conn.close();

}

例如,如果我输入 qweqweqwe 作为密码,那么 errror 就像 用户缺少权限或找不到对象:qweqweqwe

表名和字段名与查询中的完全相同,所以没有问题

完整的错误是这样的:

线程“AWT-EventQueue-0”中的异常 java.security.PrivilegedActionException: java.security.PrivilegedActionException: net.ucanaccess.jdbc.UcanaccessSQLException:用户缺少权限或 找不到对象:QWEQW

【问题讨论】:

    标签: java database


    【解决方案1】:

    SQL 中的字符串应该由单引号限制,因此您应该按如下方式更新您的查询:

    query = "INSERT INTO student_signup(student_password) VALUES"+"('"+password+"')";
    

    实际上,通过连接字符串来创建查询是一个非常糟糕的主意,因为您的代码可能容易受到 SQL 注入的影响。更好的方法是使用准备好的语句:

    PreparedStatement statement = conn.prepareStatement("INSERT INTO student_signup(student_password) VALUES(?)");
    statement.setString(1, password);
    statement.execute();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-06
      • 2017-06-14
      • 2019-05-31
      • 2017-08-31
      • 1970-01-01
      • 2014-08-05
      • 2019-01-15
      • 1970-01-01
      相关资源
      最近更新 更多