用户缺少权限或找不到对象:XXXX
Posted
技术标签:
【中文标题】用户缺少权限或找不到对象:XXXX【英文标题】:user lacks privilege or object not found: 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
【问题讨论】:
【参考方案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();
【讨论】:
以上是关于用户缺少权限或找不到对象:XXXX的主要内容,如果未能解决你的问题,请参考以下文章
是啥导致错误“用户缺少权限或找不到对象:FieldName”