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

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将如下所示
用户缺少权限或找不到对象:qweqwe
表名和字段名与查询中的表名和字段名完全相同,因此没有问题
完全错误是:
线程“awt-eventqueue-0”中出现异常
java.security.privilegedActionException异常:
java.security.privilegedActionException异常:
net.ucanaccess.jdbc.ucanaccesssqlexception:用户缺少权限或
找不到对象:qweqw

最佳答案

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();

关于java - 用户缺乏特权或找不到对象:XXXX,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54841932/

10-11 01:46