学生信息的增删改查(java)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学生信息的增删改查

注意:此处用到的是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 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 JTextField(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));//设置窗体的分布为四行二列

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.addActionListener(this);

modify.addActionListener(this);

direction.addActionListener(this);

}

public void actionPerformed(ActionEvent e) {

f1.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//关闭窗体后释放资源,若不写这条语句,

//则虽然关闭了窗体,但进程还在运行。

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(); //也就不用在每一个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 = conn.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{

ResultSet 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(rsmd.getColumnName(i)); // 获得列名(将列名存放至向量columnHeads)

do

{

rows.addElement(getNextRow(rs, rsmd)); //获取下一行记录

}

while (rs.next()); // 利用循环获得所有记录

JTable jTable = new JTable(rows, columnHeads); // 将获得的行列数据信息作为参数重新构造表格视图

jTable.setSize(new Dimension(383, 81));

JScrollPane scroller = new JScrollPane(jTable);// 创建带有滚动条的面板,并将表格视图加入

f2.add(scroller, BorderLayout.CENTER); // 将面板重新加入溶器中

f2.validate(); // 验证此容器及其所有子组件

while(rs.next()){

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文本框中输入要插入的学号,

{ //在t2文本框中输入要插入的姓名,然后点击插入信息

try{

stml.executeUpdate("insert into student values('"+t1.getText()+"','"+t2.getText()+"')");

//excute的返回值是boolean型的,excuteUpdate的返回值是int型的,executeQuery的返回

相关文档
最新文档