1

自从 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

任何关于为什么的想法将不胜感激!

4

1 回答 1

1

这是 ucanaccess 不支持的非标准 SQL 删除语句,即使 Jet 引擎支持。这没什么奇怪的。因此,您必须为此使用标准 SQL。

编辑例如,像这样的东西(我没有添加所有条件):

   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')
于 2015-03-10T14:59:45.273 回答