【发布时间】:2016-04-14 10:44:20
【问题描述】:
我想使用插入语句和从另一个表中选择子查询。就我而言,我想将PRESENTATION 表中的一行添加到AVAILABILITY 表中。
AVAILABILITY表结构:
availableID (number, generated using sequence)
availableDay (varchar)
availableStart (varchar)
availableEnd (varchar)
lecturerID(FK) (varchar)
presentationID(FK) (number, generated using sequence)
PRESENTATION表结构:
presentationID (number, generated using sequence)
presentationDay (varchar)
presentationStart (varchar)
presentationEnd (varchar)
我尝试像这样在 DAO 中构造查询:
String lecturerID = Abean.getLecturerID();
String availableDay = Abean.getAvailableDay();
String availableStart = Abean.getAvailableStart();
String availableEnd = Abean.getAvailableEnd();
Date availableDate = Abean.getAvailableDate();
String presentationID = Abean.getPresentationID();
try{
currentCon = JavaConnectionDB.getConnection();
PreparedStatement ps=currentCon.prepareStatement("
insert into availability (availableID,
lecturerID,
availableDay,
availableStart,
availableEnd,
presentationid)
select(availabilityseq.nextval,
?,
presentationDay,
presentationStart,
presentationEnd,
presentationid)
from presentation where presentationid=?
");
ps.setString(1,Abean.getLecturerID());
ps.setString(2,Abean.getAvailableDay());
ps.setString(3,Abean.getAvailableStart());
ps.setString(4,Abean.getAvailableEnd());
ps.setString(5,Abean.getPresentationID());
// ps.setString(6,Abean.getAvailableID());
ps.executeUpdate();
}
catch(Exception e){
System.out.println("add availability 2 failed: An Exception has occurred! " + e);
}
正如预期的那样,它返回错误
错误:java.sql.SQLException: Invalid column index
那么,如何使用带有额外列的子查询进行插入?
更新:我的 DAO 代码
【问题讨论】:
-
你是否指定了两次绑定变量?
-
注意,在子查询中,where子句是
presentation id=?应该是presentationid=? -
我的错.. 但是在我改变它之后,同样的错误发生了。也许我应该展示我的 DAO 的其余部分?
-
也许你确实应该
-
您的查询只有 2 个问号,但您提供了 5 个绑定变量??
标签: java mysql sql-server sql-insert dao