当前位置: 首页 > 知识库问答 >
问题:

导致错误“用户缺乏特权或找不到对象:fieldname”的原因

蓟俊杰
2023-03-14

使用MS Access数据库来保存我的信息,它一直运行良好,在此之前,我创建了一个名为CreateLicense()的新方法,它接受我创建的许可证类并将其写入数据库。

当代码运行时,它将吐出一个错误,声明“用户缺乏特权或未找到对象:过期”

已经尝试更改过期的字段名称,以防它是保留字或其他东西。也尝试删除过期的字段,但随后标记相同的错误,但与联系人相反。


INSERT INTO Licenses (Name, DateRedeemed, Expired, LicenseLength, Contact) VALUES ('name','25/Jun/2019','02/Jul/2019','2','contact')
user lacks privilege or object not found: EXPIRED

下面是我的SQL语句的输出

public boolean CreateLicense(License newLicense) {
        try {
            Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
            File currentDir = new File(""); // Creates a new file
            String newFilePath = "jdbc:ucanaccess://" + currentDir.getAbsolutePath().toString() + "\\store\\data\\database1.accdb";
            Connection conn = DriverManager.getConnection(newFilePath);
            Statement stmt = conn.createStatement();
            stmt.executeUpdate("INSERT INTO Licenses (Name, DateRedeemed, Expired, LicenseLength, Contact) VALUES "
                    //Values for the SQL Statement
                    + "('" + newLicense.getName()//Start Line
                    + "','" + newLicense.getRedeemed()//Middle Lines
                    + "','" + newLicense.getExpired()//Middle Lines
                    + "','" + newLicense.getLicenseLength()//Middle Lines
                    + "','" + newLicense.getContact()+ "')");//End Line

            conn.close();
            return true;
        } catch (Exception ex) {
            String message = ex.getMessage();
            System.out.println(message);
            return false;
        }
    }

帮助解决表名的一些附加信息是许可证字段名及其类型

  • ID-自动编号
  • 名称-字符串
  • 数据-字符串
  • 过期-字符串
  • licenselength-int
  • 联系人-字符串

我使用access中的查询设计创建了一个查询,这很好地为数据库提供了信息,所以问题不是sql

更新当我在数据库中重命名表并运行应用程序时,我会得到相同的错误,但使用表名时,我将创建一个新的数据库,看看这是否解决了任何问题

找到解决方案

共有1个答案

司徒英卓
2023-03-14

LicenseLength是一个Int值,但是您用引号包围它,就像它是一个字符串一样。另外,您是否尝试过使用参数化查询,如

String sql = "INSERT INTO Licenses (Name, DateRedeemed, Expired, LicenseLength, Contact) VALUES (?, ? ,?, ?, ?)";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, newLicense.getName());
stmt.setString(2, newLicense.getRedeemed());
stmt.setString(3, newLicense.getExpired());
stmt.setInt(4, newLicense.getLicenseLength());
stmt.setString(5, newLicense.getContact());
 类似资料:
  • 问题内容: 因此,我已经在Google和堆栈中进行搜索,我发现了一堆错误相同的ppl,但是没有一种解决方案似乎可以解决我的问题。 我正在使用什么: Java 8 JavaEE7 TomEE 7.0 M3 JPA 2.0 ORM 1.0 Postgres 我认为问题在于命名查询,也许还有ManyToMany关系。 实体 User.java SystemRole.java XML配置 persiste

  • 我正在使用和。每当我尝试执行insert语句时,我都会得到错误。 表clears存在于中,但是我遇到了这个错误。 offersdao.java

  • 我正在看一些旧代码,在运行一个单元测试时遇到了问题。 代码为: 但是,当试图准备语句时,它会抛出错误 用户缺少权限或找不到对象:CUSTOMERS_SEQ。下一个瓦尔。 我正在阅读错误本身,似乎找不到任何东西。奇怪的是,当我在本地运行查询选择CUSTOMERS_SEQ.NEXTVAL时,它工作正常。 任何和所有的帮助将不胜感激。

  • 在我的项目中,我使用HSQLDB作为数据库。构建了数据库并添加了两个条目。现在我正在尝试用JPA获取这些条目。不幸的是,获得以下异常 错误:用户缺乏权限或找不到对象:BOOK javax.persistence.persistenceexception:org.hibernate.exception.sqlgrammarexception:无法在org.hibernate.jpa.spi.abst

  • 在我的项目中,我使用HSQLDB作为数据库。构造了数据库并添加了两个条目。现在我正在尝试用JPA获取这些条目。不幸的是,出现以下异常 错误:用户缺乏特权或未找到对象:BOOK javax.persistence.persistenceException:org.hibernate.exception.sqlgrammareXception:在org.hibernate.jpa.spi.abstra