You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java统计Access数据表的字段数量?

获取Access数据表字段数量的Java实现修正

先修正你代码里的两处基础错误:

  • 变量data声明为int却赋值字符串,应该初始化为int data = 0;
  • PreparedStatement的executeQuery()不需要传入SQL参数,直接调用无参方法即可,否则会触发参数不匹配的异常。

接下来实现获取字段数量的逻辑:通过ResultSet的getMetaData()方法获取结果集元数据,再调用getColumnCount()就能得到数据表的字段总数。

修正后的完整代码如下:

package DatabaseEditor;

import java.sql.*;

public class DatabaseOptions {

    Connection con;
    String url = "jdbc:ucanaccess://databases\\Saves.mdb";
    
    public int getFields() {
        int data = 0; // 修正类型匹配问题

        try {
            con = DriverManager.getConnection(url);
            String sql = "SELECT * FROM Workers";
            
            PreparedStatement stat = con.prepareStatement(sql);
            ResultSet rs = stat.executeQuery(); // 修正executeQuery调用方式
            
            // 获取字段数量的逻辑
            ResultSetMetaData metaData = rs.getMetaData();
            data = metaData.getColumnCount();
            
            // 手动关闭资源
            rs.close();
            stat.close();
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return data;
    }
}

额外建议:使用try-with-resources语法自动关闭数据库连接、Statement和ResultSet,避免手动关闭时遗漏导致的资源泄漏,优化后的代码更安全简洁:

package DatabaseEditor;

import java.sql.*;

public class DatabaseOptions {

    String url = "jdbc:ucanaccess://databases\\Saves.mdb";
    
    public int getFields() {
        int data = 0;

        try (Connection con = DriverManager.getConnection(url);
             PreparedStatement stat = con.prepareStatement("SELECT * FROM Workers");
             ResultSet rs = stat.executeQuery()) {
            
            ResultSetMetaData metaData = rs.getMetaData();
            data = metaData.getColumnCount();
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        return data;
    }
}

内容的提问来源于stack exchange,提问作者youssif farid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:54:28