我是Riya B.Tech。学生和我必须做一个关于大学管理系统这个主题的corejava项目。我已经使用MS Access创建了所需的数据库。我在这里附加的代码中遇到问题。实际上,我想更新数据库中的数据,所以我在其中一个中制作了2帧。询问何时输入,然后第二个框架打开,并要求输入要更新的标记...当我输入要更新的标记时,将打开一个对话框,提示“标记已成功更新”。直到这里我没有任何问题..问题是当我打开数据库时,我发现实际上Marks没有在那里更新。所以请请有人帮助我解决这个问题。

代码如下:

第一帧

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

class MyFrame03 extends JFrame implements ActionListener {
    JLabel l1;
    JTextField t1;
    JPanel p1, p2;
    JButton b1;
    Connection con;
    PreparedStatement pst;
    String s1;

    MyFrame03() {
        setLayout(new GridLayout(4, 1));
        setTitle("Enter Data Required");
        setBackground(Color.blue);
        l1 = new JLabel("Roll no");
        t1 = new JTextField(12);
        p1 = new JPanel();
        p2 = new JPanel();
        b1 = new JButton("SUBMIT");
        p1.add(l1);
        p1.add(t1);
        p2.add(b1);
        add(p1, "Center");
        add(p2, "South");
        b1.addActionListener(this);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 500);
        setVisible(true);
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            con = DriverManager.getConnection("Jdbc:Odbc:dsn3");
            if (con != null)
                System.out.println("Connection Established");
        }
        catch (Exception e) {
            System.out.println("exception");
        }
    }

    public void actionPerformed(ActionEvent e1) {
        if (e1.getSource() == b1) {
            s1 = t1.getText();
            try {
                pst = con.prepareStatement("insert into stud values(?)");
                pst.setString(1, s1);
                pst.executeUpdate();
                con.commit();
                con.close();
            }
            catch (SQLException e) {
                System.out.println("except1");
            }
            MyFrame04 m1 = new MyFrame04(s1);
            dispose();
        }
    }

    public static void main(String s[]) throws SQLException {
        MyFrame03 m1 = new MyFrame03();
    }
}


第二帧

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

class MyFrame04 extends JFrame implements ActionListener {
    JLabel l1;
    JTextField t1;
    JPanel p1, p2;
    JButton b1;
    String s1, s2;
    Connection con;
    PreparedStatement pst;

    public MyFrame04(String s1) {
        this.s1 = s1;
        setLayout(new GridLayout(4, 1));
        setTitle("Update Marks");
        setBackground(Color.blue);
        l1 = new JLabel("Enter Marks");
        t1 = new JTextField(12);
        b1 = new JButton("SUBMIT");
        p1 = new JPanel();
        p2 = new JPanel();
        p1.add(l1);
        p1.add(t1);
        p2.add(b1);
        add(p1, "Center");
        add(p2, "South");
        b1.addActionListener(this);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 500);
        setVisible(true);
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            con = DriverManager.getConnection("Jdbc:Odbc:dsn3");
            if (con != null)
                System.out.println("Connection Established");
        }
        catch (Exception e) {
            System.out.println("exception");
        }
    }

    public void actionPerformed(ActionEvent e1) {
        if (e1.getSource() == b1) {
            s2 = t1.getText();
            try {
                pst = con.prepareStatement("UPDATE stud set Marks=? WHERE Roll no=?");
                pst.setString(1, s2);
                pst.setString(2, s1);
                pst.executeUpdate();
                con.commit();
                con.close();
            }
            catch (SQLException e) {
                System.out.println("except1");
            }
            JOptionPane.showMessageDialog(this, "Marks updated succesfully");
            dispose();
        }
    }
}


谢谢

最佳答案

您的数据库访问代码是否可以在不使用Swing的情况下工作?看到这种情况的最简单方法是:

class HelloDatabase {
  public static void main(String[] args) {
    try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection con = DriverManager.getConnection("Jdbc:Odbc:dsn3");
        if (con != null) {
            int marks = 1, roll = 1; // or whatever (your data here)
            System.out.println("Connection Established");
            PreparedStatement pst = con.prepareStatement("UPDATE stud SET marks=? WHERE roll_num=?");
            pst.setString(1, marks);
            pst.setString(2, roll);
            pst.executeUpdate();
            con.commit();
            con.close();
        }
    }
    catch (Exception e) {
        System.out.println("exception");
    }
  }
}


如果这能够处理并正确访问数据库,那么您很幸运。

顺便说一句-实际上这可能是您的问题-我注意到原始帖子中的SQL查询存在歧义:

UPDATE stud set Marks=? WHERE Roll no=?


据我所知,“没有”不会被识别为有效的SQL字段-这些应该是一个“单词”(例如“ roll”,“ roll_num”或什至“ RollNum”),但我不认为像“ Roll no”这样的名称就可以在这里使用。)

10-06 12:44