删除UcanAccess中的函数会引发奇怪的异常

时间:2015-03-10 07:52:08

标签: java sql ucanaccess

由于从Java 1.8中删除了JDBC桥(我们仍然在哀悼)并转移到UcanAccess,我一直在调试过去从未给我任何问题的SQL代码。其中一个陈述是:

DELETE TreatmentRecords.DateGiven, TreatmentRecords.TimeGiven, SInformation.Surname, SInformation.FirstNames, TreatmentRecords.Diagnosis, TreatmentRecords.*
FROM SInformation INNER JOIN TreatmentRecords ON SInformation.SID = TreatmentRecords.SID
WHERE (((TreatmentRecords.DateGiven)=#2015-03-07#) AND ((TreatmentRecords.TimeGiven)='17;16') AND ((SInformation.Surname)='Doe') AND ((SInformation.FirstNames)='John') AND ((TreatmentRecords.Diagnosis)='Headache'));

在Access本身执行时,我绝对没有错误或问题。 但是,Ucancess抛出以下异常:

net.ucanaccess.jdbc.UcanaccessSQLException: unexpected token: TREATMENTRECORDS required: FROM

任何关于为什么会受到高度赞赏的想法!

1 个答案:

答案 0 :(得分:1)

它是一个非标准的SQL删除语句,ucanaccess不支持,即使Jet引擎也支持。没什么好奇的。 因此,您必须使用标准SQL。

EDIT 例如,这样的事情(我还没有添加所有条件):

   DELETE FROM TreatmentRecords tr WHERE 
    tr.DateGiven=#2015-03-07# AND EXISTS 
(SELECT * FROM SInformation s WHERE s.SID=tr.SID AND  s.Surname='Doe')