jdbc ucanaccesssqlexception ucaexc ::: 4.0 4 意外令牌:DOCTOR

Posted

技术标签:

【中文标题】jdbc ucanaccesssqlexception ucaexc ::: 4.0 4 意外令牌:DOCTOR【英文标题】:jdbc ucanaccesssqlexception ucaexc ::: 4.0 4 unexpected token: DOCTOR 【发布时间】:2019-05-30 13:37:41 【问题描述】:

我正在使用带有 java 类的 netbeans 从访问数据库表中获取数据并将其显示在 jtable 上。当我按照所有步骤操作时,它给了我 ucanaccess 错误,因为 net ucanaccess jdbc ucanaccesssqlexception ucaexc ::: 4.0 4 unexpected token: DOCTOR。我在 accdb 中有两个名为 Patient 和 Doctor 的表。

我已经做了所有需要的。

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 上。

【问题讨论】:

你打错了,URL的前缀应该是jdbc:ucanaccess:,而不是jdbc.ucanaccess:(使用:而不是a .). Class.forName 声明的意义何在?不需要。 现在它给出“net ucanaccess jdbc ucanaccesssqlexception ucaexc ::: 4.0 4 unexpected token: DOCTOR” FROM 条件缺少对 Doctor 表的查询。不要忘记 WHERE 标准中医生和患者之间的“链接”(FK 关系)(p.Disease = Doctor.Specialization 可能还不够) Doctor.Name AS Doctor 后面少了一个逗号。 【参考方案1】:

我假设:

    您正在使用 JPA 你设置delimited-identifiers 您还使用 EclipseLink 作为实现。

如果是,请执行以下操作:

在 persistence.xml 中包含一个目标数据库条目:

    <property name="eclipselink.target-database" value="org.eclipse.persistence.platform.database.AccessPlatformDelimiterConfig"/>

在你的类路径中添加一个新类:

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 = "";
    

【讨论】:

以上是关于jdbc ucanaccesssqlexception ucaexc ::: 4.0 4 意外令牌:DOCTOR的主要内容,如果未能解决你的问题,请参考以下文章

廖雪峰Java15JDBC编程-3JDBC接口-2JDBC查询

什么是JDBC?

有关jdbc以及JDBC事务的相关操作

JDBC笔记--- JDBC概述

JDBC连接ORACLE

JDBC