学生信息的增删改查(java)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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文本框中输入要插入的学号,