The_dream1121 2024-05-13 00:20 采纳率: 88.2%
浏览 2
已结题

关于#java#的问题,请各位专家解答!

出现问题:构建输出时,java: 找不到符号,符号: 变量 DbUtils,位置: 类 DataOperateDemo,应该怎么解决问题

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

public class DataOperateDemo extends JFrame {
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost:3306/mysql";
    static final String USER = "root";
    static final String PASS = "gena20031121";

    private JTable table;
    private JScrollPane scrollPane;
    private JButton addButton;
    private JButton deleteButton;
    private JButton updateButton;
    private JButton searchButton;

    public DataOperateDemo() {
        setTitle("数据表操作");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 300);

        // 创建JTable和滚动条
        table = new JTable();
        scrollPane = new JScrollPane(table);
        getContentPane().add(scrollPane, BorderLayout.CENTER);

        // 创建操作按钮
        addButton = new JButton("增加");
        deleteButton = new JButton("删除");
        updateButton = new JButton("修改");
        searchButton = new JButton("查询");
        JPanel buttonPanel = new JPanel();
        buttonPanel.add(addButton);
        buttonPanel.add(deleteButton);
        buttonPanel.add(updateButton);
        buttonPanel.add(searchButton);
        getContentPane().add(buttonPanel, BorderLayout.SOUTH);

        addButton.addActionListener(e -> addData());
        deleteButton.addActionListener(e -> deleteData());
        updateButton.addActionListener(e -> updateData());
        searchButton.addActionListener(e -> searchData());

        setVisible(true);
    }

    // 增加数据
    private void addData() {
        Connection conn = null;
        Statement stmt = null;
        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            stmt = conn.createStatement();

            int id = Integer.parseInt(JOptionPane.showInputDialog("请输入ID"));
            String name = JOptionPane.showInputDialog("请输入姓名");
            int age = Integer.parseInt(JOptionPane.showInputDialog("请输入年龄"));

            String sql = "INSERT INTO student (id, name, age) VALUES (" + id + ", '" + name + "', " + age + ")";
            stmt.executeUpdate(sql);

            JOptionPane.showMessageDialog(this, "添加成功");
        } catch (SQLException | ClassNotFoundException se) {
            se.printStackTrace();
            JOptionPane.showMessageDialog(this, "添加失败:" + se.getMessage());
        } finally {
            try {
                if (stmt != null) stmt.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
            try {
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }

    // 删除数据
    private void deleteData() {
        int selectedRow = table.getSelectedRow();
        if (selectedRow == -1) {
            JOptionPane.showMessageDialog(this, "请先选择一行数据");
            return;
        }

        int id = Integer.parseInt(table.getValueAt(selectedRow, 0).toString());

        Connection conn = null;
        Statement stmt = null;
        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            stmt = conn.createStatement();

            String sql = "DELETE FROM student WHERE id=" + id;
            stmt.executeUpdate(sql);

            JOptionPane.showMessageDialog(this, "删除成功");
        } catch (SQLException | ClassNotFoundException se) {
            se.printStackTrace();
            JOptionPane.showMessageDialog(this, "删除失败:" + se.getMessage());
        } finally {
            try {
                if (stmt != null) stmt.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
            try {
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }

    // 修改数据
    private void updateData() {
        int selectedRow = table.getSelectedRow();
        if (selectedRow == -1) {
            JOptionPane.showMessageDialog(this, "请先选择一行数据");
            return;
        }

        int id = Integer.parseInt(table.getValueAt(selectedRow, 0).toString());
        String name = JOptionPane.showInputDialog("请输入姓名");
        int age = Integer.parseInt(JOptionPane.showInputDialog("请输入年龄"));

        Connection conn = null;
        Statement stmt = null;
        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            stmt = conn.createStatement();

            String sql = "UPDATE student SET name='" + name + "', age=" + age + " WHERE id=" + id;
            stmt.executeUpdate(sql);

            JOptionPane.showMessageDialog(this, "修改成功");
        } catch (SQLException | ClassNotFoundException se) {
            se.printStackTrace();
            JOptionPane.showMessageDialog(this, "修改失败:" + se.getMessage());
        } finally {
            try {
                if (stmt != null) stmt.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
            try {
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }

    // 查询数据
    private void searchData() {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            stmt = conn.createStatement();

            String sql = "SELECT * FROM student";
            rs = stmt.executeQuery(sql);

            // 将查询结果添加到JTable中
            table.setModel(DbUtils.resultSetToTableModel(rs));
        } catch (SQLException | ClassNotFoundException se) {
            se.printStackTrace();
        } finally {
            try {
                if (rs != null) rs.close();
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        new DataOperateDemo();
    }
}


  • 写回答

3条回答 默认 最新

  • 笑面虎 2024-05-13 00:20
    关注

    以下内容由CHATGPT及笑面虎共同生成、有用望采纳:


    您想要解决的问题

    您遇到的问题是在构建Java程序时,遇到了“找不到符号”的编译错误,具体是找不到变量 DbUtils

    问题出现原因

    这个错误出现的原因是您的程序中调用了 DbUtils.resultSetToTableModel(rs) 方法,但是没有导入 DbUtils 类或者没有定义 DbUtils 类及其方法 resultSetToTableModel

    问题解决方案

    要解决这个问题,您需要确保 DbUtils 类及其方法 resultSetToTableModel 在您的项目中是可用的。DbUtils 是一个第三方库,它提供了简化数据库操作的工具。您需要将这个库添加到您的项目中。

    添加DbUtils库

    如果您使用Maven或Gradle作为构建工具,您可以通过添加相应的依赖来引入DbUtils库。

    对于Maven,您可以在pom.xml文件中添加以下依赖:

    <dependency>
        <groupId>commons-dbutils</groupId>
        <artifactId>commons-dbutils</artifactId>
        <version>1.7</version>
    </dependency>
    

    对于Gradle,您可以在build.gradle文件中添加以下依赖:

    dependencies {
        implementation 'commons-dbutils:commons-dbutils:1.7'
    }
    

    如果您不使用构建工具,您需要下载DbUtils的JAR文件并将其添加到项目的类路径中。

    修改现有代码

    一旦您添加了DbUtils库,您的程序应该能够识别 DbUtils 类。无需对现有代码进行修改,因为您已经正确地调用了 DbUtils.resultSetToTableModel(rs) 方法。

    代码运行方式

    1. 确保您的开发环境中安装了Java Development Kit (JDK)。
    2. 如果您使用IDE(如IntelliJ IDEA或Eclipse),请确保DbUtils库已被正确添加到项目的类路径中。
    3. 如果您使用命令行,请确保您的CLASSPATH环境变量包含了DbUtils的JAR文件。

    代码预期运行结果

    如果您正确添加了DbUtils库,您的程序应该能够编译并通过 DbUtils.resultSetToTableModel(rs) 方法将查询结果转换为 TableModel 对象,进而显示在 JTable 中。

    推荐相关链接

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月2日
  • 已采纳回答 8月25日
  • 创建了问题 5月13日