核心java项目帮助需要

时间:2010-09-07 14:11:04

标签: java swing jdbc

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

代码如下:

1ST FRAME

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();
    }
}

第二次FRAME

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();
        }
    }
}

三江源

1 个答案:

答案 0 :(得分:2)

没有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=?
根据我的理解,“Roll no”不会被识别为有效的SQL字段 - 这些应该是单个'word'(如'roll','roll_num'甚至'RollNum' - 但我不知道我认为像'Roll no'这样的名字可以在这里使用。)