我试图用外键将一个元组从输入关系INPUTRel插入到源关系uk_rd_penst中,然后更新目标关系uk_status的元组。UK_Status和UK_RD_POSTAD具有主键-外键关系。
以下是参数:inputrel:TransId,Company,ICB_Code,RD2008 uk_rd_peston:Company,ICB_Code,RD_spend_2008 uk_status:Company:RD08
因此,我将INPUTRel中的一个元组插入到uk_rd_pest中。它成功了。但是当我试图更新UK_Status的元组时,它返回了SQLException。
我正在尝试更新RD08,但我也需要检查是否违反了外键约束(如果公司名称不存在于uk_rd_pest中)。然而,我得到了以下错误:
SQLException: UCAExc:::4.0.3 user lacks privilege or object not found:
我不知道该怎么修好它。我的html" target="_blank">代码的部分如下所示:
String queryFK = "SELECT * FROM UK_Status WHERE Company = "
+ company + "";
pstmt = conn.prepareStatement(queryFK);
pstmt.setString(1, company);
pstmt.setDouble(2, RD2008);
String msg1;
try {
pstmt.executeUpdate();
} catch (SQLException se) {
// Check FK Violation: company must exist
if (t2.get(company).getCompany() == null) {
// or this ?->
// if
// (!(conn.createStatement()).executeQuery(queryFK).next())
// {
String ICB_CodeTest = Integer.toString(ICB_Code);
String RD2008Test = Double.toString(RD2008);
ICB_CodeTest = ICB_CodeTest.replaceAll("\\s+", "");
RD2008Test = RD2008Test.replaceAll("\\s+", "");
msg1 = "Transaction "
+ tid
+ " failed due to a FK constraint, for the following values of the input; ("
+ company + ", " + ICB_Code + ", " + RD2008
+ ")";
String fk2 = "INSERT INTO OUTPUTRel"
+ "(TransId, RunMessages) " + "values (?, ?)";
pstmt = conn.prepareStatement(fk2);
pstmt.setInt(1, tid);
pstmt.setString(2, msg1);
pstmt.execute();
pstmt.close();
continue;
}
}
//
String companyName = t2.get(company).getCompany();
Status s = t2.get(companyName);
s.setRD2008(RD2008);
String query = "UPDATE UK_Status SET RD08 = ? WHERE Company = ?";
pstmt = conn.prepareStatement(query);
pstmt.setDouble(1, s.getRD2008());
pstmt.setString(2, company);
int number = (int) s.getRD2008();
if (number < ICB_Code) {
msg = "Transaction "
+ tid
+ " succeeded for the following values of the input; ("
+ company + ", " + ICB_Code + ", " + RD2008 + ")";
pstmt.execute();
// Finally insert execution result on the output table.
String oo = "INSERT INTO OUTPUTRel"
+ "(TransId, RunMessages) " + "values (?, ?)";
pstmt = conn.prepareStatement(oo);
pstmt.setInt(1, tid);
pstmt.setString(2, msg);
pstmt.execute();
pstmt.close();
} else {
msg = "Transaction "
+ tid
+ " failed due to a dynamic constraint, for the following values of the input; ("
+ company + ", " + ICB_Code + ", " + RD2008 + ")";
// Finally insert execution result on the output table.
String dynamicFail = "INSERT INTO OUTPUTRel"
+ "(TransId, RunMessages) " + "values (?, ?)";
pstmt = conn.prepareStatement(dynamicFail);
pstmt.setInt(1, tid);
pstmt.setString(2, msg);
pstmt.execute();
pstmt.close();
}
}
String queryFK = "SELECT * FROM UK_Status WHERE Company = "
+ company + "";
pstmt = conn.prepareStatement(queryFK);
pstmt.setString(1, company);
pstmt.setDouble(2, RD2008);
String msg1;
try {
pstmt.executeUpdate();
} catch (SQLException se) {
您的语句不能用作PreparedStatement,因为您输入的是值而不是?
。这就是错误来自BTW,因为您没有引用该值,所以数据库查找具有公司名称的列,而不是在列`company'中查找值为company
的行。
另外,您可以使用executeupdate
执行语句,该语句不能与select-statement一起使用,也不会返回可以迭代的resultset。
我正在尝试做一些Ucanaccess实践,用Java管理一些数据库。我得到了一个我不知道如何解决的错误。 我在Access中有一个名为USERS的表: 自动编号,短文本,短文本,数字。 代码继续,但只有一些条件和查询。
当我试图将数据放入数据库时,我出现了一个错误,这是我的注册函数
我正在看一些旧代码,在运行一个单元测试时遇到了问题。 代码为: 但是,当试图准备语句时,它会抛出错误 用户缺少权限或找不到对象:CUSTOMERS_SEQ。下一个瓦尔。 我正在阅读错误本身,似乎找不到任何东西。奇怪的是,当我在本地运行查询选择CUSTOMERS_SEQ.NEXTVAL时,它工作正常。 任何和所有的帮助将不胜感激。
问题内容: 因此,我已经在Google和堆栈中进行搜索,我发现了一堆错误相同的ppl,但是没有一种解决方案似乎可以解决我的问题。 我正在使用什么: Java 8 JavaEE7 TomEE 7.0 M3 JPA 2.0 ORM 1.0 Postgres 我认为问题在于命名查询,也许还有ManyToMany关系。 实体 User.java SystemRole.java XML配置 persiste
我试图使用SQL从java代码编写一个查询,以查找两个日期列之间的年份差异。我有一个表,其中包含列和,我想计算这两列之间的年数。 我的java代码块: 每当我试图运行代码时,我都会得到错误 我想要的是获得列和之间的年数。