Ucanaccess SQL 异常:不支持的功能(Access 和 Netbeans)
Ucanaccess SQL Exception: feature not supported (Access and Netbeans)
我已经研究这个问题好几天了,决定在这里问这个问题,看看是否有人能帮我指明正确的方向。
我正在尝试使用来自 MS Access 2013 table 的数据填充我的 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.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.access0(EventQueue.java:97)
at java.awt.EventQueue.run(EventQueue.java:709)
at java.awt.EventQueue.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.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
您需要调用 PreparedStatement#executeQuery()
而不是 PreparedStatement#executeQuery(String)
我已经研究这个问题好几天了,决定在这里问这个问题,看看是否有人能帮我指明正确的方向。
我正在尝试使用来自 MS Access 2013 table 的数据填充我的 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.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.access0(EventQueue.java:97)
at java.awt.EventQueue.run(EventQueue.java:709)
at java.awt.EventQueue.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.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
您需要调用 PreparedStatement#executeQuery()
而不是 PreparedStatement#executeQuery(String)