【问题标题】:Ucanaccess SQL Exception: feature not supported (Access and Netbeans)Ucanaccess SQL 异常:不支持功能(Access 和 Netbeans)
【发布时间】:2015-10-02 12:24:55
【问题描述】:

我已经研究这个问题好几天了,决定在这里问这个问题,看看是否有人可以帮助我指出正确的方向。

我正在尝试使用 MS Access 2013 表中的数据填充 Netbeans 8.0.2 程序中的组合框。

我正在使用最新的“Ucanaccess”及其所有必要组件来获得两者之间的连接,并且据我所知连接良好。但是,当我运行程序时,它会弹出一条错误异常消息,内容为:

net.ucanaccess.jdbc.UcanaccessSQLException: feature not supported

就是这样 - 没有其他字母、字符、数字......什么都没有。

我真的迷路了。有谁知道为什么我可能会收到此异常消息?

另外,我在 Mac 上运行它,但是我使用并行,实际上是在 Microsoft Windows 7 虚拟平台上运行它。从那以后,它根本没有给我带来任何麻烦。 64 位。

这是我编写的代码。

import java.sql.*;
import javax.swing.*;

public class NewJFrame extends javax.swing.JFrame {
    Connection conn = null;
    ResultSet rs = null;
    PreparedStatement pst = null;

    private void FillCombo() {
        String sql = "Select [Description] from [Doors]";
        try {
            String driver = "net.ucanaccess.jdbc.UcanaccessDriver";
            Class.forName(driver);
            conn = DriverManager.getConnection("jdbc:ucanaccess://C:/Test/DB.accdb");
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery(sql);

            while (rs.next()) {
                String nme = rs.getString("Description");
                cmb1.addItem(nme);
            }
            conn.close();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,e);
        }            
    }

    /**
     * Creates new form NewJFrame
     */
    public NewJFrame() {
        initComponents();
        FillCombo();            
    }

更新:

net.ucanaccess.jdbc.UcanaccessSQLException: feature not supported
    at net.ucanaccess.jdbc.UcanaccessStatement.executeQuery(UcanaccessStatement.java:202)
    at NewJFrame.FillCombo(NewJFrame.java:26)
    at NewJFrame.<init>(NewJFrame.java:50)
    at NewJFrame$2.run(NewJFrame.java:117)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.sql.SQLFeatureNotSupportedException: feature not supported
    at org.hsqldb.jdbc.JDBCUtil.notSupported(Unknown Source)
    at org.hsqldb.jdbc.JDBCPreparedStatement.executeQuery(Unknown Source)
    at net.ucanaccess.jdbc.UcanaccessStatement.executeQuery(UcanaccessStatement.java:199)
    ... 17 more

【问题讨论】:

  • In you catch block try put e.printStackTrace(); 这将告诉您更多有关错误发生位置的信息。您是在 Parallels(Windows 下)运行代码还是在 Mac 下运行代码?
  • 如果有意义的话,我正在 Windows 端的 Mac(我使用 MacBook Pro)下的 Parallels 中运行代码。我添加了代码。现在消息是这样的..(请参阅更新的原始帖子)
  • 你需要使用pst.executeQuery()而不是pst.executeQuery(sql)
  • 我刚刚做了世界历史上最大的手掌。谢谢@MadProgrammer。感谢您的回复和帮助!
  • @MadProgrammer - 请考虑发布您的解决方案作为答案。

标签: java ms-access netbeans sqlexception ucanaccess


【解决方案1】:

你需要打电话给PreparedStatement#executeQuery()而不是PreparedStatement#executeQuery(String)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-29
    • 2011-04-15
    • 2017-01-19
    • 2019-01-27
    • 2018-02-02
    • 2013-12-15
    • 1970-01-01
    • 2017-08-24
    相关资源
    最近更新 更多