Java jdbc ucanaccesssqlexception ucaexc:::4.0 4意外标记:医生
我使用netbeans和java类从access数据库表中获取数据,并将其显示在jtable上。当我按照所有步骤操作时,它将ucanaccess错误显示为net ucanaccess jdbc ucanaccesssqlexception ucaexc:::4.0 4意外标记:DOCTOR。我在accdb有两张表,分别是“病人”和“医生” 我已经做了一切必要的事情Java jdbc ucanaccesssqlexception ucaexc:::4.0 4意外标记:医生,java,jdbc,ucanaccess,Java,Jdbc,Ucanaccess,我使用netbeans和java类从access数据库表中获取数据,并将其显示在jtable上。当我按照所有步骤操作时,它将ucanaccess错误显示为net ucanaccess jdbc ucanaccesssqlexception ucaexc:::4.0 4意外标记:DOCTOR。我在accdb有两张表,分别是“病人”和“医生” 我已经做了一切必要的事情 public void viewAppointment() throws ClassNotFoundException, SQLEx
public void viewAppointment() throws ClassNotFoundException, SQLException{
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
Connection conn = DriverManager.getConnection("jdbc:ucanaccess://C:/Users/AQ/Documents/NetBeansProjects/MC170402106_2/MC170402106.accdb");
String sql1 = "Select p.Name AS Patient, p.Disesae AS Disease, Doctor.Name AS Doctor"
+ " Doctor.Visiting_Day AS SechduleDay from Patients AS p"
+ " where p.Disease = Doctor.Specialization";
try{
ps = conn.prepareStatement(sql1);
rs = ps.executeQuery();
jTable1.setModel(DbUtils.resultSetToTableModel(rs));
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
我希望这将从数据库中获取数据并将其显示在jtable上。我假设:
您正在使用JPA
您可以设置分隔标识符
您还使用EclipseLink作为实现。
如果是,请按以下步骤操作:
在persistence.xml中包含目标数据库项:
<property name="eclipselink.target-database" value="org.eclipse.persistence.platform.database.AccessPlatformDelimiterConfig"/>
如果输入错误,URL的前缀应该是jdbc:ucanaccess:,而不是jdbc.ucanaccess:use:,而不是..Class.forName语句的意义是什么?不需要它。现在它提供了net ucanaccess jdbc ucanaccesssqlexception ucaexc:::4.0 4意外标记:医生从条件缺少对医生表的查询。不要忘记医生和患者之间的“链接”FK关系,其中标准p.Disease=Doctor.Specialization可能不需要,因为Doctor.Name AS Doctor后面缺少一个逗号。
package org.eclipse.persistence.platform.database;
public class AccessPlatformDelimiterConfig extends AccessPlatform {
private static final long serialVersionUID = 7034590043310425678L;
public AccessPlatformDelimiterConfig() {
super();
this.tableQualifier = "";
this.startDelimiter = "";
this.endDelimiter = "";
}
}