当前位置: 首页 > 知识库问答 >
问题:

在UCanAccess中执行PreparedStatement时出现“功能不受支持”错误

令狐宣
2023-03-14

我试图使用ResultSet(UCanAccess支持)在GUI中填充我的组合框

package Vegan;

import java.sql.Connection;
import java.sql.DriverManager;


public class connectionString {

static Connection connection = null;

public static Connection getConnection()
{
    try
    {
        connection = DriverManager.getConnection("jdbc:ucanaccess://C:/Mo//MyDatabase1.accdb");
        System.out.println("---connection succesful---");
    }

    catch (Exception ex)
    {
        System.out.println("Connection Unsuccesful");
    }

    return connection;
}
package Vegan;

import static java.nio.file.Files.list;
import static java.rmi.Naming.list;
import java.sql.*;
import java.util.ArrayList;
import static java.util.Collections.list;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JComboBox;


public class DB {


private static ResultSet rs = null;
private static PreparedStatement ps = null;
private static Connection connection = null;
private int StoreID;
private String userID;

public DB() {
    connection = connectionString.getConnection();
}


public void getCat(JComboBox box) throws SQLException {
    //String sql = "SELECT CategoryName FROM CategoryTbl GROUP BY CategoryName";


    String query = "SELECT CategoryName FROM CategoryTbl";
    ps = connection.prepareStatement(query);

    rs = ps.executeQuery(query);

    while (rs.next()) {
        String groupName = rs.getString("CategoryName");
        box.addItem(groupName);


    }
package Vegan;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultComboBoxModel;
import net.proteanit.sql.DbUtils;


public class UserMenu extends javax.swing.JFrame {

/**
 * Creates new form UserMenu
 */
public UserMenu() {
    try {
        initComponents();
        DB db = new DB();
        db.getCat(cmbCategory);


    } catch (SQLException ex) {
        Logger.getLogger(UserMenu.class.getName()).log(Level.SEVERE, null, ex);
    }
}

每次尝试执行UserMenu()时,我都会遇到以下错误:

run:
---connection succesful---
Sep 11, 2016 11:04:47 PM Vegan.UserMenu <init>
SEVERE: null
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.6 feature not supported
at net.ucanaccess.jdbc.UcanaccessStatement.executeQuery(UcanaccessStatement.java:211)
at Vegan.DB.getCat(DB.java:203)
at Vegan.UserMenu.<init>(UserMenu.java:28)
at Vegan.UserMenu$4.run(UserMenu.java:179)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
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:208)
... 17 more

我不知道这是什么原因。我想这是ucanaccess的问题吧?链接到access数据库以供参考:http://www53.zippyshare.com/v/DMLjdpDw/file.html

共有1个答案

古畅
2023-03-14

异常是由该语句引起的

rs = ps.executeQuery(query);

对于刚开始使用准备语句对象的人来说,这是一个常见的错误。

调用时提供SQL命令文本。准备声明,例如。

ps = connection.prepareStatement(query);

因此,当执行PreparedStatement时,只需调用

rs = ps.executeQuery();

因为我们从不调用。执行 带有参数的PreparedStatement的方法,UCanAccess JDBC驱动程序抛出一个“功能不受支持”异常。

 类似资料:
  • 我正在尝试使用Java JTDS驱动程序连接到Scala中的数据库。然而,每当我尝试使用它时,我会得到一个错误,即(Java的?)是错的。 java.lang.unsupportedClassVersionError:net/sourceforge/jtds/jdbcx/jtdsDataSource:Unsupported major.minor版本51.0 null java版本“1.6.0_3

  • 编辑:因为人们仍然从google登陆这里,你必须在OpenGL环境中调用每一个OpenGL方法。因此,在使用GL做任何事情之前,请确保您在一个上下文中。 我试图用lwjgl在我的屏幕上呈现一个简单的文本,但是每次都失败了!当我启动游戏时,它崩溃了,并向我抛出错误: 我需要使用现代openGL还是什么?我真的需要帮助

  • 问题内容: 我有通过执行PreparedStatement插入数据库表的JDBC代码。当我在内存中的HSQLDB数据库上运行代码时(作为JUnit测试的一部分),我得到一个SQLFeatureNotSupportedException信息,唯一的信息是消息“功能不受支持”和供应商代码-1500。我正在做的是基本插入到表中- 我无法想象最新的HSQLDB不支持此功能。 我的代码: 谁能说出问题所在或

  • 问题内容: 当我尝试使用Java 7连接URL(支持TLS 1.2且以前与Java 7兼容的供应商URL之一)时,发现以下异常: 这样我就启用了,并且 在那之后我也遇到了同样的问题。然后,我将Java版本升级到8,这样它就可以连接到URL而没有任何SSL问题。 如本博客所述,在Java 8中,默认设置为TLS 1.2,并且可以使用Java 7中的属性调整TLS 1.2 。在Java 7中,如果我根

  • 我正在尝试使用SQLite数据库在android中本地存储电子邮件。当我第一次调用,该数据库尚不存在,已创建。我在create语句中遇到语法错误。。。我的代码看起来像这样。。。 我不熟悉SQLite语法,我一直在寻找导致这种情况的原因,但没有任何结果。知道是什么引起的吗?数据库确实是本地存储此类数据的最佳方式。 准确的错误如下所示。。

  • 这是我在私人网络中的简单合同 我已经使用web3J生成了智能合同包装器,功能如下 当我试图访问我的合同功能时,如 它给了我一个例外 请帮忙。