java - 将 jtable 中的编辑和删除信息添加到数据库

标签 java mysql database jtable

我正在尝试将此表中的信息类型保存或删除到数据库中。当我运行这段代码时,我只是不断收到错误,而且我一生都无法弄清楚我做错了什么。框架将打开,当您输入与要更改的内容相对应的代码指定的 ID 时,它仍然没有改变。

import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;

class Changeadd {
JFrame f;
JPanel p1, p2, p3;
JTabbedPane tp;
ImageIcon btnimg1, btnimg2;
JLabel l1, l2, l3, l4, l5, l6, l7, l8, l9, l10;
JTextField tf1, tf2, tf3, tf4, tf5, tf6, tf7, tf8, tf9, tf10;
JScrollPane sp1;
JButton savebtn, resetbtn, editbtn1, editbtn2, deletebtn;

Changeadd() {
    f = new JFrame("Form");
    p1 = new JPanel(new GridLayout(5, 2));
    p2 = new JPanel(new GridLayout(5, 2));
    p3 = new JPanel(new GridLayout(2, 2));
    tp = new JTabbedPane();
    l1 = new JLabel("MenuID");
    l2 = new JLabel("Name");
    l3 = new JLabel("Info");
    l4 = new JLabel("Price");
    l5 = new JLabel("Enter Menu ID to delete");

    l7 = new JLabel("MenuID");
    l8 = new JLabel("Name");
    l9 = new JLabel("Info");
    l10 = new JLabel("Price");
    tf1 = new JTextField(12);
    tf2 = new JTextField(12);
    tf3 = new JTextField(12);
    tf4 = new JTextField(12);
    tf5 = new JTextField(12);
    tf6 = new JTextField(12);
    tf7 = new JTextField(12);
    tf8 = new JTextField(12);
    tf9 = new JTextField(12);
    tf10 = new JTextField(12);
    savebtn = new JButton(" Add ");
    resetbtn = new JButton(" Reset");
    editbtn1 = new JButton(" Edit ");
    editbtn2 = new JButton(" Save");
    deletebtn = new JButton("Delete");
    p1.add(l1);
    p1.add(tf1);
    p1.add(l2);
    p1.add(tf2);
    p1.add(l3);
    p1.add(tf3);
    p1.add(l4);
    p1.add(tf4);
    p1.add(savebtn);
    p1.add(resetbtn);

    p2.add(l7);
    p2.add(tf7);
    p2.add(l8);
    p2.add(tf8);
    p2.add(l9);
    p2.add(tf9);
    p2.add(l10);
    p2.add(tf10);
    p2.add(editbtn1);
    p2.add(editbtn2);

    p3.add(l5);
    p3.add(tf5);
    p3.add(deletebtn);
    resetbtn.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ae) {
            tf1.setText("");
            tf2.setText("");
            tf3.setText("");
            tf4.setText("");
        }
    });
    savebtn.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ae) {
            String value1 = tf1.getText();
            String value2 = tf2.getText();
            String value3 = tf3.getText();
            String value4 = tf4.getText();
            Connection con = null;
            String url = "jdbc:mysql://localhost:3306/mydb";
            String db = "myDB";
            String driver = "com.mysql.jdbc.Driver";
            String user = "root";
            String pass = "root";
            System.out.println(value1 + value2 + value3 + value4);
            try {
                Class.forName(driver);
                con = DriverManager.getConnection(url + db, user, pass);
                PreparedStatement st = con
                        .prepareStatement("INSERT INTO menu(menu.menuID,menu.name,menu.info,menu.price) values(?,?,?,?)");
                st.setString(1, value1);
                st.setString(2, value2);
                st.setString(3, value3);
                st.setString(4, value4);
                st.executeUpdate();
                JOptionPane.showMessageDialog(p1,
                        "Data is successfully inserted into database.");
                con.close();
            } catch (Exception e) {
                JOptionPane.showMessageDialog(p1,
                        "Error in submitting data!");
            }
        }
    });

    deletebtn.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ae) {

            String value1 = tf5.getText();
            Connection con = null;
            String url = "jdbc:mysql://localhost:3306/mydb";
            String db = "myDB";
            String driver = "com.mysql.jdbc.Driver";
            String user = "root";
            String pass = "root";
            try {
                Class.forName(driver);
                con = DriverManager.getConnection(url + db, user, pass);
                PreparedStatement st = con
                        .prepareStatement("DELETE FROM menu WHERE menu.menuID = ?");
                st.setString(1, value1);
                st.executeUpdate();
                JOptionPane.showMessageDialog(p3,
                        "Record is deleted successfully.");
                con.close();
            } catch (Exception exp3) {
                JOptionPane.showMessageDialog(p3,
                        "Error in deleting record.");
            }
        }
    });
    editbtn1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ae) {

            String value = tf7.getText();
            Connection con = null;
            String url = "jdbc:mysql://localhost:3306/mydb";
            String db = "myDB";
            String driver = "com.mysql.jdbc.Driver";
            String user = "root";
            String pass = "root";
            try {
                Class.forName(driver);
                con = DriverManager.getConnection(url + db, user, pass);
                PreparedStatement st = con
                        .prepareStatement("SELECT FROM menu WHERE menu.menuID=?");
                st.setString(1, value);
                ResultSet res = st.executeQuery();
                res.next();
                tf7.setText(Integer.toString(res.getInt(1)));
                tf8.setText(res.getString(2));
                tf9.setText(res.getString(3));
                tf10.setText(Integer.toString(res.getInt(4)));
                con.close();
            } catch (Exception e) {
                JOptionPane.showMessageDialog(p2, "Can not edit data");
            }
        }
    });
    editbtn2.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ae) {
            Connection con = null;
            String url = "jdbc:mysql://localhost:3306/mydb";
            String db = "myDB";
            String driver = "com.mysql.jdbc.Driver";
            String user = "root";
            String pass = "root";
            try {
                int x = JOptionPane.showConfirmDialog(p2,
                        "Confirm edit? All data will be replaced");
                if (x == 0) {
                    try {
                        String value1 = tf7.getText();
                        String value2 = tf8.getText();
                        String value3 = tf9.getText();
                        String value4 = tf10.getText();

                        Class.forName(driver);
                        con = DriverManager.getConnection(url + db, user,
                                pass);
                        ;
                        Statement st = con.createStatement();
                        st.executeUpdate("UPDATE menu set menu.name'"
                                + value2 + "', menu.info'" + value3
                                + "', menu.price'" + value4
                                + "' where menu.menuID='" + value1 + "'");
                        JOptionPane.showMessageDialog(p2,
                                "Updated successfully");
                        con.close();
                    } catch (Exception ex) {
                        JOptionPane.showMessageDialog(p2,
                                "Error in updating edit fields");
                    }
                }
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(p2, "Error");
            }
        }
    });
}

void dis() {
    f.getContentPane().add(tp);
    tp.addTab("Add Record", p1);
    tp.addTab("Edit Record", p2);
    tp.addTab("Delete Record", p3);

    f.setSize(350, 180);
    f.setVisible(true);
    f.setResizable(true);
}

public static void main(String z[]) {
    Changeadd pro = new Changeadd();
    pro.dis();
}

}

最佳答案

我认为您的网址错误

String url = "jdbc:mysql://localhost:3306/mydb";

已经包含附加的 mydb

con = DriverManager.getConnection(url + db, user, pass);

会通过

"jdbc:mysql://localhost:3306/mydbmyDB"

还有

您必须将 mysql-connector-java-5.1.18-bin.jar 文件放入文件夹中:

YOUR_WEBAPPS_FOLDER/YOUR_WEBAPP/WEB-INF/lib/

这样当 Web 容器编译您的 servlet 时,它就可以在类路径中使用。

关于java - 将 jtable 中的编辑和删除信息添加到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13761685/

相关文章:

java - Azure Service Fabric Java SSL/HTTPS 服务器

java - 如何在 BottomSheetDialogFragment 中设置最大高度?

java - 在 Java 中是否收集了永久代空间垃圾?

php - mysqli_* 或 mysql_* 性能?

mysql - 如何在subs查询mysql中添加查询限制

java - intellij 正在将 src 复制到目标

mysql - 为什么并行执行查询时MySQL的性能会下降?

mysql - 违反完整性约束 (LEETO14.SYS_C00414504)

android - 如何在前台和后台进程之间同步访问sqlite db?

sql - oracle DB 中的自动增量替代方案