JAVA入门到精通-第70讲-学生管理系统2-增删改

-完成一个mini版本学生管理系统

jude软件:很好使的,安装一下就可以用了;
1167156-20181130181513118-203711660.png

-学生管理系统的添加 、修改、删除、上下页分页
1167156-20181130181513354-703750271.png
----------------------------------------------
1167156-20181130181513701-1667606368.png
上面是一个流布局,JPanel
下面是一个流布局,JPanel
中间是Border布局,边界布局,CENTER

1167156-20181130181513955-489015255.png
JTextField jtf;

先加JLable--->Jtf文本域->JButton按钮
1167156-20181130181514169-951588036.png

1167156-20181130181514366-752107606.png

1167156-20181130181514572-1178980039.png

-------------------------
mis 系统:信息管理系统;
-模糊查询还是精确匹配?
1167156-20181130181514758-1781314977.png
查询-按钮响应-监听:
ActionListener
注册监听器:
1167156-20181130181514960-1024369689.png

//判断是哪个按钮被点击
响应函数:
1167156-20181130181515281-210234941.png

也可以这样做:
局限性是响应函数
actionPerformed和jb1在同一个类里面;
至少能访问到jb1;
1167156-20181130181515453-585013142.png

Connectionpool这样的技术不需要重新连接;
JDBC需要重新连接数据库;

------------------------------------------
-可不可以对数据库的操作单写一个类,
当我们需要数据库的操作的时候,去new出一个实例
1167156-20181130181515718-1118586765.png

1.想办法把对表的操作封装成一个类:
这个类可以完成对表的操作;

-抽象表模型:
1167156-20181130181516853-1865561099.png
1167156-20181130181517146-1603866635.png
-setModel
如果不用这个方法的话,数据不更新,
查询完以后,更新数据,会发现原来的数据还在那,又添加了一条数据;
会变得越来越多;

1167156-20181130181517316-441069154.png
-TableModel类
StuModel可以当成一个表来使用了;
-AbstractTableModel
1167156-20181130181517525-1341973771.png

1167156-20181130181518162-265962988.png

1167156-20181130181518696-152948382.png
--------------------------------------------
-把对数据库的操作放在AbstractTableModel
-数据模型就是表;
-数据库的操作放在 构造函数-public StuModel( )
1167156-20181130181519205-98097703.png

-初始化的代码放在StuModel ( )里面,代码封装在StuModel
这个类里面去了;
1167156-20181130181519602-946874875.png

1167156-20181130181520057-1633862287.png
后面需要取数据,直接从这个模型类里面拿就行了;

1167156-20181130181520352-1707908305.png
1167156-20181130181520740-502407108.png

1167156-20181130181521137-119538895.png

1167156-20181130181521584-2143605866.png
rowData是一个向量;
row行,column列;
会自动调用;

1167156-20181130181521920-483795194.png

@override
重写方法-更改列名-Override-getColumnName
1167156-20181130181522190-1591853099.png
1167156-20181130181522863-957852561.png
1167156-20181130181523526-1898941275.png
【把对数据库的操作做成一个模型】
---------------------------------------------
-如何取数据?
1.创建一个数据模型对象
StuModel  sm=new StuModel();

- 查询数据库变得简单方便了:
 现在只要能够拿到用户的关键字,
 然后把一个SQL语句传到
StuModel里面去,再更新一下就可以了;
1167156-20181130181523807-1272812641.png

String name=this.jtf.getText(). trim();    // trim把空的字符串过滤一下 
1167156-20181130181524123-184969208.png

//通过传递的sql语句来获得数据模型
1167156-20181130181524358-639912634.png
//构建新的数据类型 ,并更新
setModel() 会 自动更新数据;
1167156-20181130181524602-1408954900.png

1167156-20181130181524816-793428071.png

1167156-20181130181525033-1601329041.png
查询:
1167156-20181130181525208-442028431.png

1167156-20181130181525547-1134505968.png
 
1167156-20181130181526035-65315335.png

在init()函数里面做个小小的配置:
1167156-20181130181526295-1311712883.png


1167156-20181130181526811-1017685157.png

-------------------------
-添加、修改:
这个类显示添加学生信息的对话框:
StuAddDialog继承类:
Browse可以直接让它继承: 继承JDialog
1167156-20181130181527822-1730881645.png
1167156-20181130181528575-2051599194.png

extends JDialog
1167156-20181130181528842-743534659.png

//owner它的父窗口
//title窗口名
//modal模态窗口还是非模态的
1167156-20181130181529160-839879732.png
modal-这个窗口打开后,是否允许点击其他窗口页面;

1167156-20181130181530545-414651750.png

--------------------------
-添加按钮
1167156-20181130181530902-676808878.png
-对按钮响应:
1167156-20181130181531716-1289766042.png


1167156-20181130181532200-1065971854.png

1167156-20181130181532725-502030428.png

false 窗口可以任意的移动;true必须对窗口响应;

------------------
-把添加的一些列动作,封装到addStu里面去
1167156-20181130181532910-2095061463.png
-添加完过后,需要重新再获得新的数据模型
1167156-20181130181533195-1311467199.png
//删除、修改依次类推;

1167156-20181130181533539-787016679.png
=================================
-把对一个表的操作封装到数据模型里;

Mini学生管理系统

1167156-20181130181533784-1989421723.jpg

[JTable_Test3.java]源码

/** * 完成一个mini版本的学生管理系统(MODEL1模式) * 1、查询任务 * 2、添加功能 * 3、使用的是sql server2012,数据库驱动与连接与视频教程中的sql server2000连接* 有所不同 */ package com.student1; 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.ResultSet; import java.sql.SQLException; import java.util.Vector; import javax.swing.*; import javax.swing.table.AbstractTableModel; public class JTable_Test3 extends JFrame implements ActionListener{ //定义组件 JPanel jp1,jp2; JLabel jl1; JButton jb1,jb2,jb3,jb4; JTable jt; JScrollPane jsp; JTextField jtf; StuModel sm; //定义操作数据库需要的组件 PreparedStatement ps=null; Connection ct=null; ResultSet rs=null; public static void main(String[] args) { try { // 将当前窗体外观设置为所在操作系统的外观 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (UnsupportedLookAndFeelException e) { e.printStackTrace(); } new JTable_Test3(); } //构造函数 public JTable_Test3(){ jp1=new JPanel(); jtf=new JTextField(10); jb1=new JButton("查询"); jb1.addActionListener(this); jl1=new JLabel("请输入名字"); //把各个空间加入列 jp1.add(jl1); jp1.add(jtf); jp1.add(jb1); jp2=new JPanel(); jb2=new JButton("添加"); jb2.addActionListener(this); jb3=new JButton("修改"); jb3.addActionListener(this); jb4=new JButton("删除"); jb4.addActionListener(this); //把各个按钮加入到jp2中 jp2.add(jb2); jp2.add(jb3); jp2.add(jb4); //创建一个数据模型对象 sm=new StuModel(); //初始化JTable jt=new JTable(sm); //初始化jsp JScrollPane jsp=new JScrollPane(jt); //把jsp放入到jframe this.add(jsp); this.add(jp1,"North"); this.add(jp2,"South"); this.setSize(400, 300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==jb1){ //因为把对表的数据封装到StuModel中,我们就可以比较简单的完成查询 String name=this.jtf.getText(); //写一个SQL语句 String sql="select * from stu where stuName='"+name+"'"; //构建新的数据模型类,并更新 sm=new StuModel(sql); //更新JTable jt.setModel(sm); } //用户点击添加时 else if(e.getSource()==jb2){ StuAddDialog sa=new StuAddDialog(this, "添加学生", true); //重新再获得新的数据模型 //构建新的数据模型类,并更新 sm=new StuModel(); //更新JTable jt.setModel(sm); } //用户修改数据 else if(e.getSource()==jb3){ int rowNum=this.jt.getSelectedRow(); if(rowNum==-1){ //提示 JOptionPane.showMessageDialog(this, "请选择一行", "提示", JOptionPane.INFORMATION_MESSAGE); return; } //显示修改对话框 new StuUpdDialog(this,"修改学生信息",true,sm,rowNum); //更新数据模型 sm=new StuModel(); //更新JTable jt.setModel(sm); } //用户点击删除时,删除一条选中的数据 else if(e.getSource()==jb4){ //1、得到学生的ID号 //getSelectedRow会返回用户点中的行 //如果该用户一行都没有选择,就会返回-1 int rowNum=this.jt.getSelectedRow(); if(rowNum==-1){ //提示 JOptionPane.showMessageDialog(this, "请选择一行", "提示", JOptionPane.INFORMATION_MESSAGE); return; } //得到学生编号 String stuId=(String)sm.getValueAt(rowNum, 0); //连接数据库,完成删除任务 try { //1、加载驱动 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //2、得到连接 ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=stussystem;user=sa;password=sa;"); ps=ct.prepareStatement("delete from stu where stuid=?"); ps.setString(1, stuId); ps.executeUpdate(); } catch (Exception e2) { e2.printStackTrace(); }finally{ try { if(rs!=null){ rs.close(); } if(ps!=null){ ps.close(); } if(ct!=null){ ct.close(); } } catch (SQLException e1) { e1.printStackTrace(); } } //更新数据模型 sm=new StuModel(); //更新JTable jt.setModel(sm); } } }
180
 
1
/**
2
 * 完成一个mini版本的学生管理系统(MODEL1模式)
3
 * 1、查询任务
4
 * 2、添加功能
5
* 3、使用的是sql server2012,数据库驱动与连接与视频教程中的sql server2000连接*    有所不同
6
 */
7
package com.student1;
8
 
9
import java.awt.event.ActionEvent;
10
import java.awt.event.ActionListener;
11
import java.sql.Connection;
12
import java.sql.DriverManager;
13
import java.sql.PreparedStatement;
14
import java.sql.ResultSet;
15
import java.sql.SQLException;
16
import java.util.Vector;
17
import javax.swing.*;
18
import javax.swing.table.AbstractTableModel;
19
 
20
public class JTable_Test3 extends JFrame implements ActionListener{
21
    //定义组件
22
    JPanel jp1,jp2;
23
    JLabel jl1;
24
    JButton jb1,jb2,jb3,jb4;
25
    JTable jt;
26
    JScrollPane jsp;
27
    JTextField jtf;
28
    StuModel sm;
29
   
30
    //定义操作数据库需要的组件
31
    PreparedStatement ps=null;
32
    Connection ct=null;
33
    ResultSet rs=null; 
34
   
35
    public static void main(String[] args) {
36
        try {
37
            // 将当前窗体外观设置为所在操作系统的外观
38
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
39
        } catch (ClassNotFoundException e) {
40
            e.printStackTrace();
41
        } catch (InstantiationException e) {
42
            e.printStackTrace();
43
        } catch (IllegalAccessException e) {
44
            e.printStackTrace();
45
        } catch (UnsupportedLookAndFeelException e) {
46
            e.printStackTrace();
47
        }
48
        new JTable_Test3();
49
    }
50
   
51
    //构造函数
52
    public JTable_Test3(){
53
        jp1=new JPanel();
54
        jtf=new JTextField(10);
55
        jb1=new JButton("查询");
56
        jb1.addActionListener(this);
57
        jl1=new JLabel("请输入名字");
58
       
59
        //把各个空间加入列
60
        jp1.add(jl1);
61
        jp1.add(jtf);
62
        jp1.add(jb1);
63
       
64
        jp2=new JPanel();
65
        jb2=new JButton("添加");
66
        jb2.addActionListener(this);
67
        jb3=new JButton("修改");
68
        jb3.addActionListener(this);
69
        jb4=new JButton("删除");
70
        jb4.addActionListener(this);
71
       
72
        //把各个按钮加入到jp2中
73
        jp2.add(jb2);
74
        jp2.add(jb3);
75
        jp2.add(jb4);
76
       
77
        //创建一个数据模型对象
78
        sm=new StuModel();
79
       
80
        //初始化JTable
81
        jt=new JTable(sm);
82
       
83
        //初始化jsp JScrollPane
84
        jsp=new JScrollPane(jt);
85
       
86
        //把jsp放入到jframe
87
        this.add(jsp);
88
        this.add(jp1,"North");
89
        this.add(jp2,"South");
90
       
91
        this.setSize(400, 300);
92
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
93
        this.setVisible(true);
94
    }
95
 
96
    @Override
97
    public void actionPerformed(ActionEvent e) {
98
        if(e.getSource()==jb1){
99
            //因为把对表的数据封装到StuModel中,我们就可以比较简单的完成查询
100
            String name=this.jtf.getText();
101
            //写一个SQL语句
102
            String sql="select * from stu where stuName='"+name+"'";
103
            //构建新的数据模型类,并更新
104
            sm=new StuModel(sql);
105
            //更新JTable
106
            jt.setModel(sm);
107
        }
108
        //用户点击添加时
109
        else if(e.getSource()==jb2){
110
            StuAddDialog sa=new StuAddDialog(this, "添加学生", true);
111
            //重新再获得新的数据模型
112
            //构建新的数据模型类,并更新
113
            sm=new StuModel();
114
            //更新JTable
115
            jt.setModel(sm);
116
        }
117
        //用户修改数据
118
        else if(e.getSource()==jb3){
119
            int rowNum=this.jt.getSelectedRow();
120
            if(rowNum==-1){
121
                //提示
122
                JOptionPane.showMessageDialog(this, "请选择一行", "提示", JOptionPane.INFORMATION_MESSAGE);
123
                return;
124
            }
125
           
126
            //显示修改对话框
127
            new StuUpdDialog(this,"修改学生信息",true,sm,rowNum);
128
           
129
            //更新数据模型
130
            sm=new StuModel();
131
            //更新JTable
132
            jt.setModel(sm);
133
        }
134
       
135
        //用户点击删除时,删除一条选中的数据
136
        else if(e.getSource()==jb4){
137
            //1、得到学生的ID号
138
            //getSelectedRow会返回用户点中的行
139
            //如果该用户一行都没有选择,就会返回-1
140
            int rowNum=this.jt.getSelectedRow();
141
            if(rowNum==-1){
142
                //提示
143
                JOptionPane.showMessageDialog(this, "请选择一行", "提示", JOptionPane.INFORMATION_MESSAGE);
144
                return;
145
            }
146
            //得到学生编号
147
            String stuId=(String)sm.getValueAt(rowNum, 0);
148
            //连接数据库,完成删除任务
149
            try {
150
                //1、加载驱动
151
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
152
                //2、得到连接
153
    ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=stussystem;user=sa;password=sa;");
154
                ps=ct.prepareStatement("delete from stu where stuid=?");
155
                ps.setString(1, stuId);
156
                ps.executeUpdate();
157
            } catch (Exception e2) {
158
                e2.printStackTrace();
159
            }finally{
160
                try {
161
                    if(rs!=null){
162
                        rs.close();
163
                    }
164
                    if(ps!=null){
165
                        ps.close();
166
                    }
167
                    if(ct!=null){
168
                        ct.close();
169
                    }
170
                } catch (SQLException e1) {
171
                    e1.printStackTrace();
172
                }
173
            }
174
            //更新数据模型
175
            sm=new StuModel();
176
            //更新JTable
177
            jt.setModel(sm);
178
        }
179
    }
180
}

 

*******************************************************************************

[StuModel.java]源码

/** * 这是一个stu表的模型 * 可以把对student表的各种操作封装到该模型中 */ package com.student1; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Vector; import javax.swing.table.AbstractTableModel; public class StuModel extends AbstractTableModel{ //rowData用来存放行数据、columnNames存放列名 Vector rowData,columnNames; //定义操作数据库需要的组件 PreparedStatement ps=null; Connection ct=null; ResultSet rs=null; public void init(String sql){ if(sql==""||sql.equals(null)){ sql="select * from stu"; } //中间 columnNames=new Vector<>(); //设置列名 columnNames.add("学号"); columnNames.add("名字"); columnNames.add("性别"); columnNames.add("年龄"); columnNames.add("籍贯"); columnNames.add("系别"); rowData=new Vector<>(); //rowData可以存放多行 try { //1、加载驱动 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //2、得到连接 ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=stussystem;user=sa;password=sa;"); ps=ct.prepareStatement(sql); rs=ps.executeQuery(); while(rs.next()){ Vector hang=new Vector(); hang.add(rs.getString(1)); hang.add(rs.getString(2)); hang.add(rs.getString(3)); hang.add(rs.getInt(4)); hang.add(rs.getString(5)); hang.add(rs.getString(6)); //加入rowData rowData.add(hang); } } catch (Exception e) { e.printStackTrace(); }finally{ try { if(rs!=null){ rs.close(); } if(ps!=null){ ps.close(); } if(ct!=null){ ct.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //构造函数,用于初始我们的数据模型 public StuModel(String sql){ this.init(sql); } //构造函数 public StuModel(){ this.init(""); } //得到共有多少列 public int getColumnCount() { return this.columnNames.size(); } public String getColumnName(int column) { return (String)this.columnNames.get(column); } //得到共有多少行 public int getRowCount() { return this.rowData.size(); } //得到某行某列的数据 public Object getValueAt(int rowIndex, int columnIndex) { return ((Vector)this.rowData.get(rowIndex)).get(columnIndex); } }
108
 
1
/**
2
 * 这是一个stu表的模型
3
 * 可以把对student表的各种操作封装到该模型中
4
 */
5
package com.student1;
6
 
7
import java.sql.Connection;
8
import java.sql.DriverManager;
9
import java.sql.PreparedStatement;
10
import java.sql.ResultSet;
11
import java.sql.SQLException;
12
import java.util.Vector;
13
import javax.swing.table.AbstractTableModel;
14
 
15
public class StuModel extends AbstractTableModel{
16
    //rowData用来存放行数据、columnNames存放列名
17
    Vector rowData,columnNames;
18
    //定义操作数据库需要的组件
19
    PreparedStatement ps=null;
20
    Connection ct=null;
21
    ResultSet rs=null; 
22
   
23
    public void init(String sql){
24
        if(sql==""||sql.equals(null)){
25
            sql="select * from stu";
26
        }
27
        //中间
28
        columnNames=new Vector<>();
29
        //设置列名
30
        columnNames.add("学号");
31
        columnNames.add("名字");
32
        columnNames.add("性别");
33
        columnNames.add("年龄");
34
        columnNames.add("籍贯");
35
        columnNames.add("系别");
36
       
37
        rowData=new Vector<>();
38
        //rowData可以存放多行
39
        try {
40
            //1、加载驱动
41
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
42
            //2、得到连接
43
        ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=stussystem;user=sa;password=sa;");
44
           
45
            ps=ct.prepareStatement(sql);
46
            rs=ps.executeQuery();
47
           
48
            while(rs.next()){
49
                Vector hang=new Vector();
50
                hang.add(rs.getString(1));
51
                hang.add(rs.getString(2));
52
                hang.add(rs.getString(3));
53
                hang.add(rs.getInt(4));
54
                hang.add(rs.getString(5));
55
                hang.add(rs.getString(6));
56
                //加入rowData
57
                rowData.add(hang);
58
            }
59
        } catch (Exception e) {
60
            e.printStackTrace();
61
        }finally{
62
            try {
63
                if(rs!=null){
64
                    rs.close();
65
                }
66
                if(ps!=null){
67
                    ps.close();
68
                }
69
                if(ct!=null){
70
                    ct.close();
71
                }
72
            } catch (SQLException e) {
73
                // TODO Auto-generated catch block
74
                e.printStackTrace();
75
            }
76
        }
77
    }
78
 
79
    //构造函数,用于初始我们的数据模型
80
    public StuModel(String sql){
81
        this.init(sql);
82
    }
83
 
84
    //构造函数
85
    public StuModel(){
86
        this.init("");
87
    }
88
 
89
    //得到共有多少列
90
    public int getColumnCount() {
91
        return this.columnNames.size();
92
    }
93
   
94
    public String getColumnName(int column) {
95
        return (String)this.columnNames.get(column);
96
    }
97
 
98
    //得到共有多少行
99
    public int getRowCount() {
100
        return this.rowData.size();
101
    }
102
 
103
    //得到某行某列的数据
104
    public Object getValueAt(int rowIndex, int columnIndex) {
105
        return ((Vector)this.rowData.get(rowIndex)).get(columnIndex);
106
    }
107
}
108
 

********************************************************************

[StuAddDialog.java]源码

/** * 添加数据 */ package com.student1; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.GridLayout; 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.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; public class StuAddDialog extends JDialog implements ActionListener{ //定义我需要的swing组件 JLabel jl1,jl2,jl3,jl4,jl5,jl6; JButton jb1,jb2; JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6; JPanel jp1,jp2,jp3; //owner它的父窗口;title窗口名;model指定是模态窗口,还是非模态 public StuAddDialog(Frame owner,String title,boolean modal){ super(owner,title,modal);//调用父类构造方法,达到模式对话框效果 jl1=new JLabel("学号"); jl2=new JLabel("名字"); jl3=new JLabel("性别"); jl4=new JLabel("年龄"); jl5=new JLabel("籍贯"); jl6=new JLabel("系别"); jtf1=new JTextField(); jtf2=new JTextField(); jtf3=new JTextField(); jtf4=new JTextField(); jtf5=new JTextField(); jtf6=new JTextField(); jb1=new JButton("添加"); jb2=new JButton("取消"); jp1=new JPanel(); jp2=new JPanel(); jp3=new JPanel(); //设置布局 jp1.setLayout(new GridLayout(6,1)); jp2.setLayout(new GridLayout(6,1)); //添加组件 jp1.add(jl1); jp1.add(jl2); jp1.add(jl3); jp1.add(jl4); jp1.add(jl5); jp1.add(jl6); jp2.add(jtf1); jp2.add(jtf2); jp2.add(jtf3); jp2.add(jtf4); jp2.add(jtf5); jp2.add(jtf6); jp3.add(jb1); jp3.add(jb2); this.add(jp1,BorderLayout.WEST); this.add(jp2,BorderLayout.CENTER); this.add(jp3,BorderLayout.SOUTH); jb1.addActionListener(this); jb2.addActionListener(this); //展现 this.setSize(300, 250); this.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { //用户点击添加按钮后的响应动作 if(e.getSource()==jb1){ //连接数据库 Connection ct=null; Statement stmt=null; ResultSet rs=null; PreparedStatement ps=null; //连接数据库 try { //1、加载驱动 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //2、得到连接 ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=stussystem;user=sa;password=sa;"); String strsql="insert into stu values(?,?,?,?,?,?)"; ps=ct.prepareStatement(strsql); ps.setString(1,jtf1.getText()); ps.setString(2,jtf2.getText()); ps.setString(3,jtf3.getText()); ps.setInt(4,Integer.parseInt(jtf4.getText())); ps.setString(5,jtf5.getText()); ps.setString(6,jtf6.getText()); ps.executeUpdate(); this.dispose(); } catch (Exception e2) { e2.printStackTrace(); }finally{ try { if(ps!=null){ ps.close(); } if(ct!=null){ ct.close(); } } catch (SQLException e1) { e1.printStackTrace(); } } } else if(e.getSource()==jb2){ this.dispose(); } } }
154
 
1
/**
2
 * 添加数据
3
 */
4
package com.student1;
5
 
6
import java.awt.BorderLayout;
7
import java.awt.Frame;
8
import java.awt.GridLayout;
9
import java.awt.event.ActionEvent;
10
import java.awt.event.ActionListener;
11
import java.sql.Connection;
12
import java.sql.DriverManager;
13
import java.sql.PreparedStatement;
14
import java.sql.ResultSet;
15
import java.sql.SQLException;
16
import java.sql.Statement;
17
import javax.swing.JButton;
18
import javax.swing.JDialog;
19
import javax.swing.JLabel;
20
import javax.swing.JOptionPane;
21
import javax.swing.JPanel;
22
import javax.swing.JTextField;
23
 
24
public class StuAddDialog extends JDialog implements ActionListener{
25
    //定义我需要的swing组件
26
    JLabel jl1,jl2,jl3,jl4,jl5,jl6;
27
    JButton jb1,jb2;
28
    JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;
29
    JPanel jp1,jp2,jp3;
30
   
31
    //owner它的父窗口;title窗口名;model指定是模态窗口,还是非模态
32
    public StuAddDialog(Frame owner,String title,boolean modal){
33
        super(owner,title,modal);//调用父类构造方法,达到模式对话框效果
34
        jl1=new JLabel("学号");
35
        jl2=new JLabel("名字");
36
        jl3=new JLabel("性别");
37
        jl4=new JLabel("年龄");
38
        jl5=new JLabel("籍贯");
39
        jl6=new JLabel("系别");
40
       
41
        jtf1=new JTextField();
42
        jtf2=new JTextField();
43
        jtf3=new JTextField();
44
        jtf4=new JTextField();
45
        jtf5=new JTextField();
46
        jtf6=new JTextField();
47
       
48
        jb1=new JButton("添加");
49
        jb2=new JButton("取消");
50
       
51
        jp1=new JPanel();
52
        jp2=new JPanel();
53
        jp3=new JPanel();
54
       
55
        //设置布局
56
        jp1.setLayout(new GridLayout(6,1));
57
        jp2.setLayout(new GridLayout(6,1));
58
       
59
        //添加组件
60
        jp1.add(jl1);
61
        jp1.add(jl2);
62
        jp1.add(jl3);
63
        jp1.add(jl4);
64
        jp1.add(jl5);
65
        jp1.add(jl6);
66
       
67
        jp2.add(jtf1);
68
        jp2.add(jtf2);
69
        jp2.add(jtf3);
70
        jp2.add(jtf4);
71
        jp2.add(jtf5);
72
        jp2.add(jtf6);
73
       
74
        jp3.add(jb1);
75
        jp3.add(jb2);
76
       
77
        this.add(jp1,BorderLayout.WEST);
78
        this.add(jp2,BorderLayout.CENTER);
79
        this.add(jp3,BorderLayout.SOUTH);
80
       
81
        jb1.addActionListener(this);
82
        jb2.addActionListener(this);
83
       
84
        //展现
85
        this.setSize(300, 250);
86
        this.setVisible(true);
87
    }
88
 
89
    @Override
90
    public void actionPerformed(ActionEvent e) {
91
        //用户点击添加按钮后的响应动作
92
        if(e.getSource()==jb1){
93
            //连接数据库
94
            Connection ct=null;
95
            Statement stmt=null;
96
            ResultSet rs=null;
97
            PreparedStatement ps=null;
98
            //连接数据库
99
            try {
100
                //1、加载驱动
101
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
102
                //2、得到连接
103
            ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=stussystem;user=sa;password=sa;");
104
                String strsql="insert into stu values(?,?,?,?,?,?)";
105
                ps=ct.prepareStatement(strsql);
106
                ps.setString(1,jtf1.getText());
107
                ps.setString(2,jtf2.getText());
108
                ps.setString(3,jtf3.getText());
109
                ps.setInt(4,Integer.parseInt(jtf4.getText()));
110
                ps.setString(5,jtf5.getText());
111
                ps.setString(6,jtf6.getText());
112
                ps.executeUpdate();
113
                this.dispose();
114
            } catch (Exception e2) {
115
                e2.printStackTrace();
116
            }finally{
117
                try {
118
                    if(ps!=null){
119
                        ps.close();
120
                    }
121
                    if(ct!=null){
122
                        ct.close();
123
                    }
124
                } catch (SQLException e1) {
125
                    e1.printStackTrace();
126
                }
127
            }
128
        }
129
        else if(e.getSource()==jb2){
130
            this.dispose();
131
        }
132
    }
133
}
134
 



















转载于:https://www.cnblogs.com/xuxaut-558/p/10045802.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值