1、 学生信息的增删改查 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 10 个人收集整理 勿做商业用途 学生信息管理系统
2、 1 引言 对学生的根本信息进展简单操作,可按学号进展查询、修改、删除操作 注意:此处用到的是access数据库。 系统实现: package example; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import java.sql.*; import java.util.Vector; class myrandom extends JFrame implements
3、 ActionListener{ //这个程序的数据是没有写入文件的 JFrame f1,f2; JButton b1,b2,b3,b4,modify,direction; JLabel a1; JTextField t1,t2,t3,t4; JTable table; myrandom〔){ ﻩtable=new JTable〔); f1=new JFrame("学生信息系统"); f1.setVisible(true);//设置窗体可见 a1=new JLabel("输入学号:"); t1=new JTextField(100); ﻩt2=new JT
4、extField(100〕; ﻩb1=new JButton("查姓名:"〕; b2=new JButton("插入信息"); b3=new JButton〔"查看数据"); b4=new JButton("删除"); t3=new JTextField(100); modify=new JButton("修改"); direction=new JButton〔"操作说明"〕; t4=new JTextField(100〕; f1.setLayout(new GridLayout(6,2));//设置窗体的分布为四行二列
5、ﻩ f1.add(a1);f1.add(t1);//参加窗体 ﻩf1.add〔b1);f1.add(t2); f1.add(b2);f1.add〔b3〕; ﻩf1.add(b4);f1.add〔t3); ﻩf1.add(modify);f1.add(t4); ﻩf1.add(direction); ﻩf1.setSize(200,200);//设置窗体大小 b1.addActionListener(this); b2.addActionListener(this);//设置按钮事件 ﻩb3.addActionListener(this); b4.addActio
6、nListener(this); modify.addActionListener(this);ﻩ ﻩdirection.addActionListener(this〕; } ﻩpublic void actionPerformed(ActionEvent e) { ﻩf1.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//关闭窗体后释放资源,假设不写这条语句, ﻩ //那么虽然关闭了窗体
7、但进程还在运行。 ﻩtry{//这个try是在整个action中的,用于捕获建立连接异常 ﻩ Class.forName〔"sun.jdbc.odbc.JdbcOdbcDriver"); ﻩString dburl="jdbc:odbc:mydb"; //mydb是我建立的access数据源 ﻩ Connection conn=DriverManager.getConnection(dburl〕;//这四条语句是用来在整个action事件中建立连接的 Statement stml=conn.createStatement(); /
8、/也就不用在每一个button事件〔b1,b2,b3,b4)中重复写这四条语句 ﻩ ﻩ//以上四条语句也可以改写为下面这四条语句: ﻩ//ﻩString dburl="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\db1.mdb"; ﻩﻩ//ﻩClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); ﻩﻩ//ﻩConnection conn = DriverManager.getConnection(dburl); ﻩ // Statement stml = c
9、onn.createStatement〔); ﻩ if(e.getSource()==b3){//查看数据〔查看数据库中student表的所有信息 ﻩﻩﻩ ﻩf2=new JFrame("显示信息"〕; ﻩﻩf2.setVisible(true〕;//设置窗体可见 f2.setSize(200,200);//设置窗体大小 ﻩﻩ Vector rows = new Vector(〕;//用于存储数据库中的行信息 ﻩ Vector columnHeads = new Vector〔〕; //用于存储数据库中的列标题 ﻩ try{ ﻩ ﻩR
10、esultSet rs=stml.executeQuery("select * from student"〕; ﻩ boolean moreRecords = rs.next〔); // 定位到达第一条记录,这句话一定要写 ﻩﻩ ﻩ ﻩ ResultSetMetaData rsmd = rs.getMetaData(); // 获得rs结果集中列属性信息 ﻩ for (int i = 1; i <= rsmd.getColumnCount(); ++i) ﻩ columnHeads.addElement(rsm
11、d.getColumnName(i)〕; // 获得列名〔将列名存放至向量columnHeads) do { rows.addElement(getNextRow〔rs, rsmd)); //获取下一行记录 } ﻩ while (rs.next〔)); // 利用循环获得所有记录 ﻩ JTable jTable = new JTable(rows, columnHeads); // 将获得的行列数据
12、信息作为参数重新构造表格视图 jTable.setSize(new Dimension(383, 81)); JScrollPane scroller = new JScrollPane(jTable〕;// 创立带有滚动条的面板,并将表格视图参加 ﻩ f2.add(scroller, BorderLayout.CENTER〕; // 将面板重新参加溶器中 ﻩ f2.validate(); // 验证此容器及其所有子组件 ﻩﻩﻩﻩwhile(rs.next()){ ﻩ
13、String ss=rs.getString〔"id"〕;//显示输出结果 ﻩﻩﻩﻩﻩString s2=rs.getString("name"); ﻩ ﻩSystem.out.println(ss+s2); ﻩ ﻩ} ﻩ rs.close〔〕; ﻩﻩ stml.close(); ﻩﻩﻩﻩconn.close(); //使用完后要记得关闭所有连接 ﻩﻩﻩ}catch〔Exception ee〕{System.out.println(ee);} ﻩﻩ} ﻩ ﻩﻩelse if(e.getSource(〕==b2)//插入信息〔在t1文本框中输入
14、要插入的学号, ﻩ { //在t2文本框中输入要插入的姓名,然后点击插入信息 ﻩﻩﻩtry{ stml.executeUpdate〔"insert into student values('"+t1.getText()+"','"+t2.getText〔)+"')"); //excute的返回值是boolean型的,excuteUpdate的返回值是int型的,executeQuery的返回值是ResultSet型的 stml.close(); conn.close();ﻩﻩ ﻩﻩﻩ}catch(Excep
15、tion e1〕{System.out.println〔e1);} ﻩﻩSystem.out.println("Insert successfully!"〕; ﻩJOptionPane.showMessageDialog(f1,"插入成功!"〕; ﻩﻩ} ﻩﻩ else if(e.getSource〔)==b1〕//查姓名〔在t1文本框中输入学号, ﻩ { //在t2文本框中显示相应的姓名 ﻩﻩ t3.setText〔""); ﻩ t4.setText(""〕; ﻩ try{ ﻩﻩﻩSystem.o
16、ut.println〔"hi"); ﻩﻩ String mysql="select name from student where id='"+t1.getText()+"'"; ﻩ ﻩ//ResultSet rs=stml.executeQuery("select name from student where id='"+t1.getText〔)+"'"〕; ﻩ ﻩResultSet rs=stml.executeQuery〔mysql); ﻩ ﻩString sn=""; ﻩﻩ while(rs.next(〕) //此处while语句用于逐条查询
17、 ﻩ ﻩ{ ﻩ ﻩ ﻩ sn=rs.getString("name"); ﻩﻩ System.out.println〔"学号为:"+t1.getText()+" 姓名是:"+sn); ﻩ ﻩ } ﻩ if(sn==""〕 //如果没有找到该学生的姓名 ﻩ ﻩﻩJOptionPane.showMessageDialog(f1,"没有该学生!"); ﻩ else ﻩ t2.setText(sn); ﻩ ﻩ rs.close(〕; ﻩﻩstml.close(); ﻩﻩ conn.close(
18、〕; ﻩ ﻩ}catch(Exception ee){System.out.println(ee);} ﻩﻩ} ﻩ ﻩ else if(e.getSource(〕==b4〕 { //按学号删除记录〔删除学号和姓名〕 ﻩ ﻩtry{ //在t3文本框中输入要删除的学号 ﻩ ﻩﻩt1.setText(""〕; ﻩﻩ ﻩt2.setText(""); ﻩ t4.setText(""); ﻩﻩﻩSystem.out.println("hi"); ﻩﻩﻩﻩString yy=""; String mmsql="select * from stude
19、nt where id='"+t3.getText〔〕+"'"; ﻩString mysql="delete from student where id='"+t3.getText(〕+"'"; ﻩﻩ ﻩResultSet rs=stml.executeQuery(mmsql); ﻩwhile〔rs.next()〕{ ﻩﻩﻩﻩyy=rs.getString("name");ﻩ ﻩﻩ ﻩ} ﻩﻩ if(yy==""){ ﻩ ﻩﻩJOptionPane.showMessageDialog〔f1,"删除失败,没有该学生!"); ﻩ ﻩrs.close(); ﻩﻩ
20、 } ﻩﻩﻩ else{ ﻩﻩ stml.executeUpdate(mysql); JOptionPane.showMessageDialog(f1,"删除成功!"); ﻩ ﻩ } ﻩﻩﻩﻩstml.close〔〕; ﻩ ﻩ conn.close(〕; }catch(Exception ee){System.out.println(ee);} ﻩSystem.out.println("success to delete!"); ﻩ} ﻩ ﻩﻩelse if〔e.getSource()==modify){//修改姓名:在t1文本框中输入要修改的学号
21、 ﻩtry{ // 在t4文本框中输入修改后的名字 //JOptionPane.showMessageDialog(f1,"请在输入学号后面输入修改前的学号,在修改后面输入修改后该学号的姓名!"); ﻩﻩ t2.setText(""); t3.setText(""〕; ﻩ ﻩString mm=""; ﻩ ﻩString mmsql="select * from student where id='"+t1.getText()+"'"; ﻩﻩ String mysql="update student set name='"+t4.getText(〕+"' whe
22、re id='"+t1.getText()+"'"; ﻩ ResultSet rs=stml.executeQuery(mmsql); ﻩﻩﻩwhile〔rs.next(〕){ ﻩﻩﻩmm=rs.getString("name"); ﻩﻩﻩ} if〔mm==""){ JOptionPane.showMessageDialog(f1,"修改失败,没有该学生!"); ﻩ rs.close();} ﻩﻩelse{ ﻩﻩﻩstml.executeUpdate(mysql〕; ﻩ ﻩJOptionPane.showMessageDialog(f1,"修改成功!")
23、 ﻩﻩ} ﻩﻩ stml.close(); conn.close(); ﻩﻩ}catch(Exception eee){System.out.println(eee〕;} ﻩ System.out.println〔"Congratulations!modify success!"); ﻩﻩ} ﻩﻩelse { ﻩ try{JOptionPane.showMessageDialog(f1,"1假设要修改:请在输入学号后面输入修改前的学号," +"\\\n"+ ﻩ ﻩ "在修改后面输入修改后该学号的姓名,然后点击'修改';"+"\\\n "+"2假设要删除,请在删除
24、后面出入要删学生的学号,然后点击'删除';" + ﻩﻩﻩ "\\\n"+"3假设要插入信息,请在输入学号后面输入学号,在查姓名后面输入姓名,然后点击'插入信息';" + ﻩ "\\\n"+" 4假设要假设要查询数据,直接点击'查看数据';" + ﻩﻩﻩ "\\\n"+" 5输入学生的学号,再点击'查姓名'可以查找该学号学生的姓名。" ﻩ ﻩﻩﻩ〕; ﻩﻩﻩﻩ }catch(Exception e2){System.out.println〔e2);} } ﻩﻩ ﻩﻩ }catch(Exception ee){System.out.println(ee〕
25、} ﻩ } ﻩ ﻩpublic static void main〔String[] args){ ﻩ new myrandom〔); } public Vector getNextRow(ResultSet rs, ResultSetMetaData rsmd)throws SQLException //该方法获取下一行记录 ﻩ{ Vector currentRow = new Vector(); // 定义一个向量,用于存放记录 for (int i = 1; i <= rsmd.getColumnCount〔); ++i) ﻩ currentRow.addElement(rs.getString(i〕); // 获取记录 ﻩ return currentRow; // 返回记录 } 运行后效果如图: }
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818