Java基础8
Java基础8 1
文件结构 1
使用jdbc-odbc桥连_Class18/ com.test1/test1.java 3
PreparedStatement的使用_Class18/ com.test1/test2.java 5
jdbc方式操作数据库操作数据库_Class18/ com.test2/test1.java 7
java中使用ddl语句_Class18/ com.test1/test2.java 9
JTable使用_Class19/ com.test1/test1.java 11
从数据库中取出学生信息_Class19/ com.test1/test2.java 12
Min版学生管理系统_数据库设计 14
min版学生管理系统1.0_Class19/ com.test1/test3.java 15
min版学生管理系统1.0_Class19/ com.test1/ StuAddDialog.java 18
min版学生管理系统1.0_Class19/ com.test1/ StuModel.java 21
min版学生管理系统2.0_Class20/ com.test1/ StuManage.java 24
min版学生管理系统2.0_Class20/ com.test1/ StuAddDialog.java 28
min版学生管理系统2.0_Class20/ com.test1/ StuUpdateDialog.java 31
min版学生管理系统2.0_Class20/ com.test1/ StuModel.java 35
min版学生管理系统3.0_Class20/ com.test2/ StuManage.java 38
min版学生管理系统3.0_Class20/ com.test2/ StuAddDialog.java 42
min版学生管理系统3.0_Class20/ com.test2/ StuUpdateDialog.java 45
min版学生管理系统3.0_Class20/ com.test2/ StuModel.java 48
min版学生管理系统3.0_Class20/ com.test2/ SqlHelper.java 50

min版学生管理系统1.0_Class19/ com.test1/test3.java

min版学生管理系统2.0_Class20/ com.test1/ StuManage.java
http://images.cnblogs.com/cnblogs_com/luowei010101/201108/201108141832561295.png
min版学生管理系统3.0_Class20/ com.test2/ StuManage.java
Java基础8 1
文件结构 1
使用jdbc-odbc桥连_Class18/ com.test1/test1.java 3
PreparedStatement的使用_Class18/ com.test1/test2.java 5
jdbc方式操作数据库操作数据库_Class18/ com.test2/test1.java 7
java中使用ddl语句_Class18/ com.test1/test2.java 9
JTable使用_Class19/ com.test1/test1.java 11
从数据库中取出学生信息_Class19/ com.test1/test2.java 12
Min版学生管理系统_数据库设计 14
min版学生管理系统1.0_Class19/ com.test1/test3.java 15
min版学生管理系统1.0_Class19/ com.test1/ StuAddDialog.java 18
min版学生管理系统1.0_Class19/ com.test1/ StuModel.java 21
min版学生管理系统2.0_Class20/ com.test1/ StuManage.java 24
min版学生管理系统2.0_Class20/ com.test1/ StuAddDialog.java 28
min版学生管理系统2.0_Class20/ com.test1/ StuUpdateDialog.java 31
min版学生管理系统2.0_Class20/ com.test1/ StuModel.java 35
min版学生管理系统3.0_Class20/ com.test2/ StuManage.java 38
min版学生管理系统3.0_Class20/ com.test2/ StuAddDialog.java 42
min版学生管理系统3.0_Class20/ com.test2/ StuUpdateDialog.java 45
min版学生管理系统3.0_Class20/ com.test2/ StuModel.java 48
min版学生管理系统3.0_Class20/ com.test2/ SqlHelper.java 50


使用jdbc-odbc桥连_Class18/ com.test1/test1.java /* * 演示使用jdbc-odbc桥连方式操作数据库 * 1.配置数据源 * 2.在程序中去连接数据源 */ package com.test1; import java.sql.*; public class Test1 { public static void main(String[] args) { Connection ct=null; //定义一个Connection Statement sm=null; //定义一个Statement try { //1.加载驱动(把需要的驱动程序加入内存) Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //2.得到连接[指定连接到哪个数据源,用户名和密码] //如果配置数据源时,选择的是windows nt验证,则不需要加"sa","luowei" //即:Connection ct=DriverMannager.getConnection("jdbc:odbc:mytest"); ct=DriverManager.getConnection("jdbc:odbc:mytest","sa","luowei"); //3.创建Statement或者PreparedStatement[区别] //Statement用处是:主要用于发送sql语句到数据库 sm=ct.createStatement(); //4.执行(crud,创建数据库,备份数据库,删除数据库....) //1.演示添加一条数据到dept表 //executeUpdate可以执行cud操作(添加,删除,修改) int i=sm.executeUpdate("insert into dept values('50','保安部','北京')"); if(i==1) { System.out.println("添加ok"); } else { System.out.println("添加error"); } //2.修改从dept表记录 int k=sm.executeUpdate("update dept set loc='北京 ' where deptno='40'"); if(k==1) { System.out.println("更新成功"); } else { System.out.println("更新不成功"); } //3.演示从dept表中删除一条记录 int j=sm.executeUpdate("delete from dept where deptno='50'"); if(j==1) { System.out.println("删除ok"); } else { System.out.println("删除error"); } //查询,显示所有部门 //ResultSet结果集 ResultSet rs=sm.executeQuery("select * from dept;"); //rs指向结果集的第一行的前一行 //循环取出 while(rs.next()) { int deptno=rs.getInt(1); String dname=rs.getString(2); String loc=rs.getString(3); System.out.println(deptno+" "+dname+" "+loc); } // //试图取出1行的第一列 // rs.next(); // int a=rs.getInt(1);//取出第1列 // System.out.println(a); // //取出第一行第2列 // String b=rs.getString(2); // System.out.println(b); //5.关闭资源,关闭顺序是,谁后创建,则谁先关闭 try { if(sm!=null) { rs.close(); sm.close(); ct.close(); } } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } } } PreparedStatement的使用_Class18/ com.test1/test2.java /* * PreparedStatement的使用 * 1.PreparedStatement可以提高执行效率(因为它有预编译的功能) * 2.PreparedStatement可以防止sql注入,但是要求用?赋值的方式才可以 */ package com.test1; import java.sql.*; public class Test2 { public static void main(String[] args) { Connection ct=null; //定义一个Connection PreparedStatement ps=null; //定义一个Statement ResultSet rs=null; try { //1.加载驱动(把需要的驱动程序加入内存) Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //2.得到连接[指定连接到哪个数据源,用户名和密码] //如果配置数据源时,选择的是windows nt验证,则不需要加"sa","luowei" //即:Connection ct=DriverMannager.getConnection("jdbc:odbc:mytest"); ct=DriverManager.getConnection("jdbc:odbc:mytest","sa","luowei"); //3.创建PreparedStatement - ps //Statement用处是:主要用于发送sql语句到数据库 ps=ct.prepareStatement("select * from dept where deptno=? and loc=?"); //给?赋值,用?赋值可以防止注入漏洞 ps.setInt(1, 20); ps.setString(2, "dallas"); rs=ps.executeQuery(); //4.查询 //ResultSet结果集 //循环取出 while(rs.next()) { int deptno=rs.getInt(1); String dname=rs.getString(2); String loc=rs.getString(3); System.out.println(deptno+" "+dname+" "+loc); } //使用PrepareStatement添加一条记录 ps=ct.prepareStatement("insert into dept values(?,?,?)"); ps.setInt(1, 50); ps.setString(2,"安全部"); ps.setString(3, "北京"); int i=ps.executeUpdate(); if(i==1) { System.out.println("添加ok"); } else { System.out.println("添加error"); } //5.关闭资源,关闭顺序是,谁后创建,则谁先关闭 try { if(rs!=null) { rs.close(); } if(ps!=null) { ps.close(); } if(ps!=null) { ct.close(); } } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } } } jdbc方式操作数据库操作数据库_Class18/ com.test2/test1.java /* * jdbc方式操作数据库 * 1.把java.sql.*;引入 * 2.需要引入三个jar包 * 3.如果取值按编号,则需要一一对应,如果是按名字取的,则顺序可以倒乱 */ package com.test2; import java.sql.*; public class Test1 { public static void main(String[] args) { //PreparedStatement[火箭车] //定义需要的对象 PreparedStatement ps=null; Connection ct=null; ResultSet rs=null; try { //初始化我们的对象 //1.加载驱动 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //2.得到连接 ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://" + "127.0.0.1:1433;databaseName=LiangshanHeros2","sa","luowei"); //3.创建火箭车 ps=ct.prepareStatement("select ename,sal,dname from emp,dept " + "where emp.deptno=dept.deptno"); //4.执行[如果是增加,删除,修改 使用executeUpdate(),如果是查询使用executeQuery()] rs=ps.executeQuery(); //循环取出,雇员的名字,雇员的薪水,部门名称 while(rs.next()) { //String name=rs.getString(1); //float sal=rs.getFloat(2); //int deptno=rs.getInt(3); String name=rs.getString("ename"); float sal=rs.getFloat("sal"); String deptno=rs.getString("dname"); System.out.println(name+" "+sal+" "+deptno); } //添加,删除,修改 ps=ct.prepareStatement("insert into dept values(?,?,?)"); ps.setInt(1, 100); ps.setString(2, "财务部"); ps.setString(3, "大学城"); //执行[如果是增加,删除,修改 使用executeUpdate(),如果是查询使用executeQuery()] int i=ps.executeUpdate(); if(i==1) { System.out.println("添加ok"); } else { System.out.println("添加error"); } //5.关闭资源,关闭顺序是,谁后创建,则谁先关闭 try { if(rs!=null) { rs.close(); } if(ps!=null) { ps.close(); } if(ps!=null) { ct.close(); } } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } } } java中使用ddl语句_Class18/ com.test1/test2.java /* * 在java中使用ddl语句(create,drop,backup...) */ package com.test2; import java.sql.*; public class Test2 { public static void main(String[] args) { //定义需要的对象 PreparedStatement ps=null; Connection ct=null; ResultSet rs=null; try { //加载驱动 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //得到连接 ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;" + "databaseName=LiangshanHeros2","sa","luowei"); //创建ps,创建数据库,创建表,备份数据库 ps=ct.prepareStatement("create database vvv"); ps=ct.prepareStatement("create table xxx(aa int)"); ps=ct.prepareStatement("backup database aaa to disk='f:/123.bak'"); //如果执行的是ddl语句 boolean b=ps.execute(); System.out.println("OK "+b); try { if(rs!=null) { rs.close(); } if(ps!=null) { ps.close(); } if(ps!=null) { ct.close(); } } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } } } JTable使用_Class19/ com.test1/test1.java /* * JTable使用 */ package com.test1; import javax.swing.*; import java.awt.*; import java.sql.*; import java.util.*; import java.awt.event.*; public class Test1 extends JFrame{ //rowData用来存放行数据 //columnNames存放列名 Vector rowData,columnNames; JTable jt=null; JScrollPane jsp=null; public static void main(String[] args) { Test1 test1=new Test1(); } //构造函数 public Test1() { Vector columnNames=new Vector(); //设置列名 columnNames.add("学号"); columnNames.add("名字"); columnNames.add("性别"); columnNames.add("年龄"); columnNames.add("籍贯"); columnNames.add("系别"); rowData=new Vector(); //rowData可以存放多行 Vector hang=new Vector(); hang.add("lw001"); hang.add("孙悟空"); hang.add("男"); hang.add("500"); hang.add("花果山"); hang.add("少林派"); //加入到rowData rowData.add(hang); //初始化JTable jt=new JTable(rowData,columnNames); //初始化jsp JScrollPane jsp=new JScrollPane(jt); //把jsp放入到jframe this.add(jsp); this.setSize(400,300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } } 从数据库中取出学生信息_Class19/ com.test1/test2.java /* * 从数据库中取出学生信息 */ package com.test1; import java.util.Vector; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import java.sql.*; public class Test2 extends JFrame{ //rowData用来存放行数据 //columnNames存放列名 Vector rowData,columnNames; JTable jt=null; JScrollPane jsp=null; //定义操作数据库需要的东西 PreparedStatement ps=null; Connection ct=null; ResultSet rs=null; public static void main(String[] args) { Test2 test2=new Test2(); } public Test2() { columnNames=new Vector(); //设置列名 columnNames.add("学号"); columnNames.add("名字"); columnNames.add("性别"); columnNames.add("年龄"); columnNames.add("籍贯"); columnNames.add("系别"); rowData=new Vector(); try { //1.加载驱动 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;" + "databaseName=LiangShanHeros","sa","luowei"); ps=ct.prepareStatement("select * from stu"); rs=ps.executeQuery(); while(rs.next()) { //rowData可以存放多行 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 (Exception e) { e.printStackTrace(); } } //初始化JTable jt=new JTable(rowData,columnNames); //初始化jsp JScrollPane jsp=new JScrollPane(jt); //把jsp放入到jframe this.add(jsp); this.setSize(400,300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } } Min版学生管理系统_数据库设计 --创建学生表 create table stu( stuId varchar(30) primary key, stuName nvarchar(50) not null, stuSex nchar(1) check(stuSex in('男','女')) default '男', stuAge int check(stuAge>1), stuJg nvarchar(30), stuDept nvarchar(40) ) insert into stu values('lw001','孙悟空','男',20,'花果山','少林派'); insert into stu values('lw002','猪八戒','男',15,'高老庄','天上的'); insert into stu values('lw003','沙悟净','男',26,'流沙河','水里的'); insert into stu values('lw004','唐三藏','男',21,'长安','庙里的'); select * from stu;
min版学生管理系统1.0_Class19/ com.test1/test3.java


/* * 完成一个min版本的学生管理系统 */ package com.test1; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import com.test1.StuModel; import java.sql.*; public class Test3 extends JFrame implements ActionListener{ //定义一些控件 JPanel jp1,jp2; JLabel jl1; JButton jb1,jb2,jb3,jb4; JTable jt; JScrollPane jsp; JTextField jtf; public static void main(String[] args) { Test3 test3=new Test3(); } //构造函数 public Test3() { jp1=new JPanel(); jtf=new JTextField(10); jb1=new JButton("查询"); jb1.addActionListener(this);//添加监听 jl1=new JLabel("请输入名字:"); //把各个控件加入jp1 jp1.add(jl1); jp1.add(jtf); jp1.add(jb1); jp2=new JPanel(); jb2=new JButton("添加"); jb2.addActionListener(this); jb3=new JButton("修改"); jb4=new JButton("请输入名字"); //把各个按钮加入到jp2 jp2.add(jb2); jp2.add(jb3); jp2.add(jb4); //中间 //创建一个数据模型对象 StuModel 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) { System.out.println("用户想查询!"); //... //查询数据库,更新JTable,这样大量的代码重复,解决办法: //把对表操作封装成一个类,可以完成对表的操作 //把对表的数据装到StuModel中,就可以比较简单的完成查询 String name=this.jtf.getText().trim(); //写一个sql语句 String sql="select * from stu where stuname='"+name+"'"; //构建新的数据模型类,并更新 StuModel sm=new StuModel(sql); //更新JTable jt.setModel(sm); } //当用户点击添加 else if(e.getSource()==jb2) { StuAddDialog sa=new StuAddDialog(this,"添加学生",true); //重新再获得新的数据模型 } } } min版学生管理系统1.0_Class19/ com.test1/ StuAddDialog.java package com.test1; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.Statement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class StuAddDialog extends JDialog implements ActionListener{ //定义需要的控件 JLabel jl1,jl2,jl3,jl4,jl5; JButton jb1,jb2; JTextField jtf1,jtf2,jtf3,jtf4,jtf5; JPanel jp1,jp2,jp3; //owner它的父窗口 //title窗口名 //modal指定模式窗口,还是非模式窗口 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("记过次数"); jtf1=new JTextField(); jtf2=new JTextField(); jtf3=new JTextField(); jtf4=new JTextField(); jtf5=new JTextField(); jb1=new JButton("添加"); jb2=new JButton("取消"); jp1=new JPanel(); jp2=new JPanel(); jp3=new JPanel(); //设置布局 jp1.setLayout(new GridLayout(5,1)); jp2.setLayout(new GridLayout(5,1)); //添加组件 jp1.add(jl1); jp1.add(jl2); jp1.add(jl3); jp1.add(jl4); jp1.add(jl5); jp2.add(jtf1); jp2.add(jtf2); jp2.add(jtf3); jp2.add(jtf4); jp2.add(jtf5); jp3.add(jb1); jp3.add(jb2); this.add(jp1,BorderLayout.WEST); this.add(jp2,BorderLayout.CENTER); this.add(jp3,BorderLayout.SOUTH); jb1.addActionListener(this); //展现对话框 this.setSize(300,200); //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { //连接数据库 Connection conn=null; //Statement stmt=null; ResultSet rs=null; PreparedStatement pstmt=null; //连接数据库,判断用户是否合法 try { //1.加载驱动 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //2.创建连接对象 String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;" + "databaseName=LiangShanHeros"; //2..注册驱动程序 conn=DriverManager.getConnection(url,"sa","luowei"); //3.获取语句对象 //stmt=conn.createStatement(); //编译的语句对象 String strsql="insert into student values(?,?,?,?,?)"; pstmt=conn.prepareStatement(strsql); //给参数赋值 pstmt.setString(1,jtf1.getText()); pstmt.setString(2,jtf2.getText()); pstmt.setString(3, jtf3.getText()); pstmt.setString(4, jtf4.getText()); pstmt.setString(5, jtf5.getText()); //4.执行操作 pstmt.executeUpdate(); this.dispose(); //关闭对话框 } catch (Exception e2) { e2.printStackTrace(); }finally{ //5释放语句对象,连接对象 try { if(rs!=null) rs.close(); if(pstmt!=null) pstmt.close(); if(conn!=null) conn.close(); } catch (Exception e3) { e3.printStackTrace(); } } } } min版学生管理系统1.0_Class19/ com.test1/ StuModel.java /* * 这是一个stu表的模型 * 可以把对stu表的各种操作封装到该模型中 */ package com.test1; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Vector; import javax.swing.table.*; 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.equals("")) { sql="select * from stu"; } columnNames=new Vector(); //设置列名 columnNames.add("学号"); columnNames.add("名字"); columnNames.add("性别"); columnNames.add("年龄"); columnNames.add("籍贯"); columnNames.add("系别"); rowData=new Vector(); try { //1.加载驱动 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;" + "databaseName=LiangShanHeros","sa","luowei"); ps=ct.prepareStatement(sql); rs=ps.executeQuery(); while(rs.next()) { //rowData可以存放多行 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 (Exception e) { e.printStackTrace(); } } } public void addStu(String sql) { //根据用户输入的sql语句,完成添加... } //通过传递的sqL语句来获得数据模型 public StuModel(String sql) { this.init(sql); } //做一个构造函数,用于初始化我们的数据模型 public StuModel() { this.init(""); } @Override //得到共有多少列 public int getColumnCount() { //System.out.println("getColumncount"); return this.columnNames.size(); } @Override //得到共有多少行 public int getRowCount() { // return this.rowData.size(); } @Override //得到某行某列的数据 public Object getValueAt(int rowIndex, int columnIndex) { //return null; return ((Vector)this.rowData.get(rowIndex)).get(columnIndex); } @Override public String getColumnName(int column) { // 重写这个方法,修改默认的列名 return (String)this.columnNames.get(column); } }
min版学生管理系统2.0_Class20/ com.test1/ StuManage.java


/* * 完成一个min版本的学生管理系统 * 1.查询任务 * 2.添加一个学生 */ package com.test1; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import com.test1.StuModel; import java.sql.*; public class StuManage 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) { StuManage test3=new StuManage(); } //构造函数 public StuManage() { jp1=new JPanel(); jtf=new JTextField(10); jb1=new JButton("查询"); jb1.addActionListener(this);//添加监听 jl1=new JLabel("请输入名字:"); //把各个控件加入jp1 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) { //对用户点击添加按钮的响应动作 System.out.println("用户想查询!"); //... //查询数据库,更新JTable,这样大量的代码重复,解决办法: //把对表操作封装成一个类,可以完成对表的操作 //把对表的数据装到StuModel中,就可以比较简单的完成查询 String name=this.jtf.getText().trim(); //写一个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, "请选择一行"); return ; } //显示修改对话框 new StuUpdateDialog(this,"修改学生",true,sm,rowNum); //重新再获得新的数据模型 sm=new StuModel(); //更新JTable jt.setModel(sm); } else if(e.getSource()==jb4) { //说明用户希望删除记录 //1.得到该学生的id int rowNum=this.jt.getSelectedRow();//返回用户点中的行,如果没有选返返-1 if(rowNum==-1) { //提示 JOptionPane.showMessageDialog(this,"请选择一行"); return ; } //得到学生编号 String stuId=(String)sm.getValueAt(rowNum, 0); //System.out.println("id="+stuId); //连接数据库,完成删除任务 try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;" + "databaseName=LiangshanHeros","sa","luowei"); 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 (Exception e3) { e3.printStackTrace(); } } //更新数据模型 sm=new StuModel(); //更新JTable jt.setModel(sm); } } } min版学生管理系统2.0_Class20/ com.test1/ StuAddDialog.java package com.test1; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.Statement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class StuAddDialog extends JDialog implements ActionListener{ //定义需要的控件 JLabel jl1,jl2,jl3,jl4,jl5,jl6; JButton jb1,jb2; JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6; JPanel jp1,jp2,jp3; //owner它的父窗口 //title窗口名 //modal指定模式窗口,还是非模式窗口 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("添加"); jb1.addActionListener(this);//注册监听 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); //展现对话框 this.setSize(300,250); //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("添加学生"); this.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==jb1) { //连接数据库 Connection conn=null; //Statement stmt=null; ResultSet rs=null; PreparedStatement pstmt=null; //连接数据库,判断用户是否合法 try { //1.加载驱动 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //2.创建连接对象 String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;" + "databaseName=LiangShanHeros"; //2..注册驱动程序 conn=DriverManager.getConnection(url,"sa","luowei"); //3.获取语句对象 //stmt=conn.createStatement(); //预编译的语句对象 String strsql="insert into stu values(?,?,?,?,?,?)"; pstmt=conn.prepareStatement(strsql); //给参数赋值 pstmt.setString(1,jtf1.getText()); pstmt.setString(2,jtf2.getText()); pstmt.setString(3,jtf3.getText()); pstmt.setString(4,jtf4.getText()); pstmt.setString(5,jtf5.getText()); pstmt.setString(6,jtf6.getText()); //4.执行操作 pstmt.executeUpdate(); this.dispose(); //关闭对话框 } catch (Exception e2) { e2.printStackTrace(); }finally{ //5释放语句对象,连接对象 try { if(rs!=null) rs.close(); if(pstmt!=null) pstmt.close(); if(conn!=null) conn.close(); } catch (Exception e3) { e3.printStackTrace(); } } } } } min版学生管理系统2.0_Class20/ com.test1/ StuUpdateDialog.java /* * 修改学生 */ package com.test1; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.Statement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class StuUpdateDialog extends JDialog implements ActionListener{ //定义需要的控件 JLabel jl1,jl2,jl3,jl4,jl5,jl6; JButton jb1,jb2; JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6; JPanel jp1,jp2,jp3; //owner它的父窗口 //title窗口名 //modal指定模式窗口,还是非模式窗口 public StuUpdateDialog(Frame owner,String title,boolean modal,StuModel sm,int rowNums) { 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(); //初始化数据 jtf1.setText((String)sm.getValueAt(rowNums, 0)); //让jtf1,不能修改 jtf1.setEditable(false); jtf2=new JTextField(); jtf2.setText((String)sm.getValueAt(rowNums, 1)); jtf3=new JTextField(); jtf3.setText((String)sm.getValueAt(rowNums, 2)); jtf4=new JTextField(); jtf4.setText(sm.getValueAt(rowNums, 3).toString()); jtf5=new JTextField(); jtf5.setText((String)sm.getValueAt(rowNums, 4)); jtf6=new JTextField(); jtf6.setText((String)sm.getValueAt(rowNums, 5)); jb1=new JButton("修改"); jb1.addActionListener(this);//注册监听 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); //展现对话框 this.setSize(300,250); //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("修改学生"); this.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==jb1) { //连接数据库 Connection conn=null; //Statement stmt=null; ResultSet rs=null; PreparedStatement pstmt=null; //连接数据库,判断用户是否合法 try { //1.加载驱动 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //2.创建连接对象 String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;" + "databaseName=LiangShanHeros"; //2..注册驱动程序 conn=DriverManager.getConnection(url,"sa","luowei"); //3.获取语句对象 //stmt=conn.createStatement(); //预编译的语句对象 String strsql="update stu set stuName=?,stuSex=?," + "stuAge=?,stuJg=?,stuDept=? where stuId=?"; pstmt=conn.prepareStatement(strsql); //给参数赋值 pstmt.setString(1,jtf2.getText()); pstmt.setString(2,jtf3.getText()); pstmt.setString(3,jtf4.getText()); pstmt.setString(4,jtf5.getText()); pstmt.setString(5,jtf6.getText()); pstmt.setString(6,jtf1.getText()); //4.执行操作 pstmt.executeUpdate(); this.dispose(); //关闭对话框 } catch (Exception e2) { e2.printStackTrace(); }finally{ //5释放语句对象,连接对象 try { if(rs!=null) rs.close(); if(pstmt!=null) pstmt.close(); if(conn!=null) conn.close(); } catch (Exception e3) { e3.printStackTrace(); } } } } } min版学生管理系统2.0_Class20/ com.test1/ StuModel.java /* * 这是一个stu表的模型 * 可以把对stu表的各种操作封装到该模型中 */ package com.test1; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Vector; import javax.swing.table.*; 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.equals("")) { sql="select * from stu"; } columnNames=new Vector(); //设置列名 columnNames.add("学号"); columnNames.add("名字"); columnNames.add("性别"); columnNames.add("年龄"); columnNames.add("籍贯"); columnNames.add("系别"); rowData=new Vector(); try { //1.加载驱动 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;" + "databaseName=LiangShanHeros","sa","luowei"); ps=ct.prepareStatement(sql); rs=ps.executeQuery(); while(rs.next()) { //rowData可以存放多行 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 (Exception e) { e.printStackTrace(); } } } public void addStu(String sql) { //根据用户输入的sql语句,完成添加... } //通过传递的sqL语句来获得数据模型 public StuModel(String sql) { this.init(sql); } //做一个构造函数,用于初始化我们的数据模型 public StuModel() { this.init(""); } @Override //得到共有多少列 public int getColumnCount() { //System.out.println("getColumncount"); return this.columnNames.size(); } @Override //得到共有多少行 public int getRowCount() { // return this.rowData.size(); } @Override //得到某行某列的数据 public Object getValueAt(int rowIndex, int columnIndex) { //return null; return ((Vector)this.rowData.get(rowIndex)).get(columnIndex); } @Override public String getColumnName(int column) { // 重写这个方法,修改默认的列名 return (String)this.columnNames.get(column); } }
min版学生管理系统3.0_Class20/ com.test2/ StuManage.java

/* * 完成一个min版本的学生管理系统model2 * 1.查询任务 * 2.添加一个学生 */ package com.test2; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import java.sql.*; public class StuManage extends JFrame implements ActionListener{ //定义一些控件 JPanel jp1,jp2; JLabel jl1; JButton jb1,jb2,jb3,jb4; JTable jt; JScrollPane jsp; JTextField jtf; StuModel sm; public static void main(String[] args) { StuManage test3=new StuManage(); } //构造函数 public StuManage() { jp1=new JPanel(); jtf=new JTextField(10); jb1=new JButton("查询"); jb1.addActionListener(this);//添加监听 jl1=new JLabel("请输入名字:"); //把各个控件加入jp1 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(); String []paras={"1"}; sm.queryStu("select * from stu where 1=?", paras); //初始化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) { //对用户点击添加按钮的响应动作 System.out.println("用户想查询!"); //... //查询数据库,更新JTable,这样大量的代码重复,解决办法: //把对表操作封装成一个类,可以完成对表的操作 //把对表的数据装到StuModel中,就可以比较简单的完成查询 String name=this.jtf.getText().trim(); //写一个sql语句 String sql="select * from stu where stuName=?"; String paras[]={name}; //构建新的数据模型类,并更新 sm=new StuModel(); sm.queryStu(sql, paras); //更新JTable jt.setModel(sm); } //当用户点击添加 else if(e.getSource()==jb2) { StuAddDialog sa=new StuAddDialog(this,"添加学生",true); //重新再获得新的数据模型 sm=new StuModel(); String []paras2={"1"}; sm.queryStu("select * from stu where 1=?", paras2); //更新JTable jt.setModel(sm); } else if(e.getSource()==jb3) { //用户希望修改 int rowNum=this.jt.getSelectedRow(); if(rowNum==-1) { //提示 JOptionPane.showMessageDialog(this, "请选择一行"); return ; } //显示修改对话框 new StuUpdateDialog(this,"修改学生",true,sm,rowNum); //重新再获得新的数据模型 sm=new StuModel(); //更新JTable String []paras2={"1"}; sm.queryStu("select * from stu where 1=?", paras2); jt.setModel(sm); } else if(e.getSource()==jb4) { //说明用户希望删除记录 //1.得到该学生的id int rowNum=this.jt.getSelectedRow();//返回用户点中的行,如果没有选返返-1 if(rowNum==-1) { //提示 JOptionPane.showMessageDialog(this,"请选择一行"); return ; } //得到学生编号 String stuId=(String)sm.getValueAt(rowNum, 0); //System.out.println("id="+stuId); //创建一个sql语句 String sql="delete from stu where stuId=?"; String []paras={stuId}; StuModel temp=new StuModel(); temp.updStu(sql,paras); //更新数据模型 sm=new StuModel(); String []paras2={"1"}; sm.queryStu("select * from stu where 1=?", paras2); //更新JTable jt.setModel(sm); } } } min版学生管理系统3.0_Class20/ com.test2/ StuAddDialog.java package com.test2; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.Statement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; public class StuAddDialog extends JDialog implements ActionListener{ //定义需要的控件 JLabel jl1,jl2,jl3,jl4,jl5,jl6; JButton jb1,jb2; JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6; JPanel jp1,jp2,jp3; //owner它的父窗口 //title窗口名 //modal指定模式窗口,还是非模式窗口 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("添加"); jb1.addActionListener(this);//注册监听 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); //展现对话框 this.setSize(300,250); //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("添加学生"); this.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==jb1) { //希望添加学生 StuModel temp=new StuModel(); String sql="insert into stu values(?,?,?,?,?,?)"; String []paras={jtf1.getText(),jtf2.getText(), jtf3.getText(),jtf4.getText(), jtf5.getText(),jtf6.getText()}; if(!temp.updStu(sql, paras)) { //提示 JOptionPane.showMessageDialog(this,"添加失败"); } //关闭对话框 this.dispose(); } } } min版学生管理系统3.0_Class20/ com.test2/ StuUpdateDialog.java /* * 修改学生 */ package com.test2; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.Statement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class StuUpdateDialog extends JDialog implements ActionListener{ //定义需要的控件 JLabel jl1,jl2,jl3,jl4,jl5,jl6; JButton jb1,jb2; JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6; JPanel jp1,jp2,jp3; //owner它的父窗口 //title窗口名 //modal指定模式窗口,还是非模式窗口 public StuUpdateDialog(Frame owner,String title,boolean modal,StuModel sm,int rowNums) { 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(); //初始化数据 jtf1.setText((String)sm.getValueAt(rowNums, 0)); //让jtf1,不能修改 jtf1.setEditable(false); jtf2=new JTextField(); jtf2.setText((String)sm.getValueAt(rowNums, 1)); jtf3=new JTextField(); jtf3.setText((String)sm.getValueAt(rowNums, 2)); jtf4=new JTextField(); jtf4.setText(sm.getValueAt(rowNums, 3).toString()); jtf5=new JTextField(); jtf5.setText((String)sm.getValueAt(rowNums, 4)); jtf6=new JTextField(); jtf6.setText((String)sm.getValueAt(rowNums, 5)); jb1=new JButton("修改"); jb1.addActionListener(this);//注册监听 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); //展现对话框 this.setSize(300,250); //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("修改学生"); this.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==jb1) { //做一个sql //预编译的语句对象 String sql="update stu set stuName=?,stuSex=?," + "stuAge=?,stuJg=?,stuDept=? where stuId=?"; String []paras={jtf2.getText(),jtf3.getText(), jtf4.getText(),jtf5.getText(), jtf6.getText(),jtf1.getText()}; StuModel temp=new StuModel(); temp.updStu(sql, paras); this.dispose(); //关闭对话框 } } } min版学生管理系统3.0_Class20/ com.test2/ StuModel.java /* * 这是一个stu表的模型 * 可以把对stu表的各种操作封装到该模型中 */ package com.test2; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Vector; import javax.swing.table.*; public class StuModel extends AbstractTableModel{ //rowData用来存放行数据 //columnNames存放列名 Vector rowData,columnNames; //初始化连接数据库,查询,查询的本质就是初始化 public void queryStu(String sql,String []paras) { SqlHelper sqlHelper=null; //中间 columnNames=new Vector(); //设置列名 columnNames.add("学号"); columnNames.add("名字"); columnNames.add("性别"); columnNames.add("年龄"); columnNames.add("籍贯"); columnNames.add("系别"); rowData=new Vector(); try { sqlHelper=new SqlHelper(); ResultSet rs=sqlHelper.queryExectue(sql, paras); while(rs.next()) { //rowData可以存放多行 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 { //关闭资源 sqlHelper.close(); } } //更新学生,添加学生(增、删、改) @SuppressWarnings("finally") public boolean updStu(String sql,String []paras)//通过函数传入参数解决 { //根据用户输入的sql语句,完成添加... //创建SqlHelper(如果程序并发性不考虑,可以把SqlHelper做成static) SqlHelper sqlHelper=new SqlHelper(); return sqlHelper.updExecute(sql, paras); } //做一个构造函数,用于初始化我们的数据模型 public StuModel() { } @Override //得到共有多少列 public int getColumnCount() { //System.out.println("getColumncount"); return this.columnNames.size(); } @Override //得到共有多少行 public int getRowCount() { // return this.rowData.size(); } @Override //得到某行某列的数据 public Object getValueAt(int rowIndex, int columnIndex) { //return null; return ((Vector)this.rowData.get(rowIndex)).get(columnIndex); } @Override public String getColumnName(int column) { // 重写这个方法,修改默认的列名 return (String)this.columnNames.get(column); } } min版学生管理系统3.0_Class20/ com.test2/ SqlHelper.java /* * 这是一个对数据库进行操作的类(SqlHelper) */ package com.test2; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class SqlHelper { //定义操作数据库需要的东西 PreparedStatement ps=null; Connection ct=null; ResultSet rs=null; String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=LiangshanHeros"; String user="sa"; String passwd="luowei"; String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"; //关闭数据库资源 public void close() { //关闭资源 try { if(rs!=null) rs.close(); if(ps!=null) ps.close(); if(ct!=null) ct.close(); } catch (final Exception e) { e.printStackTrace(); } } //写一个不需要注入的方法 public ResultSet queryExectue(String sql) { try { //1.加载驱动 Class.forName(driver); //2.得到连接 ct=DriverManager.getConnection(url,user,passwd); //3.创建ps ps=ct.prepareStatement(sql); rs=ps.executeQuery(); } catch (Exception e) { e.printStackTrace(); }finally { //关闭资源,??? } return rs; } //查询数据库操作 public ResultSet queryExectue(String sql,String []paras) { try { //1.加载驱动 Class.forName(driver); //2.得到连接 ct=DriverManager.getConnection(url,user,passwd); //3.创建ps ps=ct.prepareStatement(sql); //给ps的问号赋值 for(int i=0;i<paras.length;i++) { ps.setString(i+1, paras[i]); } rs=ps.executeQuery(); } catch (Exception e) { e.printStackTrace(); }finally { //关闭资源,??? } return rs; } //把增、删、改合到一起 public boolean updExecute(String sql,String []paras) { boolean b=true; try { //1.加载驱动 Class.forName(driver); //2.得到连接 ct=DriverManager.getConnection(url,user,passwd); //3.创建ps ps=ct.prepareStatement(sql); //给ps的问号赋值 for(int i=0;i<paras.length;i++) { ps.setString(i+1, paras[i]); } //4.执行操作 if(ps.executeUpdate()!=1) { b=false; } } catch (Exception e) { b=false; e.printStackTrace(); }finally { this.close(); } return b; } }
发表评论
-
Java连接sql2005数据库三步曲
2012-12-27 10:48 721one、two、three 导入java包 import ja ... -
主题:Java面试122题 .
2012-12-27 10:17 9002012-06-05 09:17 592人阅读 ... -
Java六大必须理解的问题
2012-12-27 10:17 5382012-05-24 11:39 793人阅读 评论(6) 收 ... -
多线程知识点整理 .
2012-12-27 10:17 590基本概念 多线程程序 ... -
数据连接池的基本实现 .
2012-12-26 13:20 8601、 实现途径: 编写JdbcPool implemen ... -
java 常用三大集合类
2012-11-23 11:07 13780一、Set集合,其主要实现类有HashSet、TreeSet。 ... -
Java笔记9(Java网络编程)
2012-10-16 14:39 757Java基础9 Java基础9 1 文件结构 ... -
swing编程实现闪屏登录效果
2012-09-18 12:07 27551、先写一个闪屏类 package com.mhl.Tools ... -
paint和paintComponent方法的关系
2012-09-18 09:50 954关键词:swing,paint,paintComp ... -
Java笔记7(IO操作、图片拷贝、记事本、测试声音、坦克大战)
2012-08-23 15:05 1058File类的基本用法_Demo12_1.java /* ... -
Java笔记6(多线程、机票售票系统、坦克大战)
2012-08-23 14:39 1638多线程Demo10_1.java /* * 演 ... -
Java笔记5(java绘图原理、事件处理机制、监听器、坦克大战)
2012-08-23 14:30 2865java绘图原理Demo9_1.java /* ... -
java中equals和==的区别
2012-08-17 10:33 17546ava中equals和==的区别 值类型是存储在内存中的堆栈( ... -
Java笔记4(布局管理器、常用组件、qq聊天界面、记事本)
2012-08-13 14:12 3403文件结构 布局管理器Demo8_1.java pa ... -
Java笔记3(泛型、异常、成绩评分程序)
2012-08-09 10:31 1067文件结构 泛型与异常 异常 Class7b / c ... -
Java笔记1(java类、接口、封装、继承、多态、约瑟夫环应用)
2012-08-09 10:26 1078文件结构 Java访问修饰符 com.xiaoming ... -
Java笔记2(数组、排序、查找、集合类、移位)
2012-08-09 10:18 1784文件结构 Class5 / com.t ...
相关推荐
java代码-使用java解决JTable的表格维护----增、删、改的问题源代码 ——学习参考资料:仅用于个人学习使用!
Java + JDBC + Sql 2005 + JTable 同步更新数据库 Powered By Null 这几天在研究Java在连接数据库,这是这几天的结果。 已经实现的的功能: 1,从 SQL 中读取数据,并显示在 JTable 中。 2,在 JTable 中实现排序,并...
Java JDBC GUI 医院信息管理系统是一种利用Java编程语言,结合Java Swing或JavaFX图形用户界面(GUI)库,以及Java数据库连接(JDBC)技术来实现的医疗数据管理解决方案。这个系统允许用户通过友好的图形界面与后台...
《家庭理财管理系统:Java Swing与JDBC的智慧融合》 在当今社会,个人财务管理变得越来越重要,而家庭理财管理系统正是解决这一需求的有效工具。本文将深入探讨一款基于Java Swing和JDBC技术的家庭理财管理系统,...
本程序是先通过各个方法统计出数据库记录的总数,然后通过总记录数数计算出总页数和...本人通过安装MySQL Connect ODBC,用JDBC-ODBC桥来和java连接 因为是初学者,有不足之处希望得到批评指正! Email:landkim@163.com
【Java-课程设计--超市管理系统的设计与实现】 本课程设计主要目标是开发一款适用于小型超市的管理系统,旨在解决随着商品数量增长带来的信息管理难题。系统采用Java语言进行编写,利用MySQL作为后台数据库,以实现...
在这个基于Java Swing开发的学生信息管理系统中,我们看到了一套完整的功能实现,包括增、删、改、查以及用户登录和注册。这个系统利用了Java的面向对象特性,通过Javabean来封装数据,Swing来构建图形用户界面(GUI...
【JAVA-GUI学生管理系统】是一种基于Java图形用户界面(GUI)技术开发的系统,主要用于管理学生信息。在Java编程环境中,GUI(图形用户界面)允许开发者创建交互式的应用程序,使得用户可以通过直观的图形元素如按钮...
在这个"Java 图形界面开发--图文并茂建立学生管理系统"的教程中,我们将深入探讨如何利用Java语言构建一个直观且功能丰富的学生管理系统。 首先,我们需要了解Java中的图形用户界面(GUI)库。Java Swing和JavaFX是...
【成绩管理系统】是一款基于Java Swing和JDBC技术开发的应用程序,专为教学环境设计,用于高效、便捷地管理学生信息、课程信息以及成绩数据。它为新手Java开发者提供了一个实践和学习的平台,有助于理解面向对象编程...
### Java的JTable:从数据库取数据显示在表格中的关键技术点 #### 一、数据库操作与JDBC连接 在Java中,使用JTable显示数据库中的数据是一个常见的应用场景。首先,我们需要了解如何通过Java Database ...
【Java 超市管理系统设计】 在Java课程设计中,超市管理系统的设计与实现是一个典型的应用,旨在提高小超市的运营效率。系统的核心目标是对商品信息进行管理,包括入库、查询、更改和删除等操作,同时也涉及进货、...
这是一个基于Java Swing、MySQL数据库和JDBC技术实现的学生成绩管理系统。系统涵盖了登录、注册、用户管理和成绩管理等核心功能,旨在为教育机构提供一个简单易用的平台来管理和跟踪学生的学术表现。 首先,Java ...
Java GUI JDBC 学生信息管理系统是一个使用Java编程语言开发的桌面应用程序,它通过图形用户界面(GUI)提供了一个直观的平台来管理和操作学生数据。这个系统利用Java的Swing或JavaFX库创建用户友好的界面,并通过...
在学生管理系统中,开发者可能使用JFrame、JButton、JLabel、JTable等组件来实现基本的界面元素。 - **JavaFX**:作为Swing的现代替代品,JavaFX提供了更丰富的UI组件和现代外观,支持CSS样式,更适合创建复杂、...
Java GUI学生成绩管理系统是一种基于Java编程语言开发的桌面应用程序,用于管理学生的考试成绩和相关数据。这个系统通常包括各种功能,如数据录入、查询、统计分析和报告生成,为教育机构提供方便的方式来跟踪和评估...
资源标题:《JTable编写GUI学生对象管理系统》资源描述:本资源提供了一个使用JTable编写的GUI学生对象管理系统的示例。通过该示例,您可以学习如何使用Java Swing库中的JTable组件来展示和管理学生对象的数据。适用...
JDBC-ODBC桥接器是Java标准版的一部分,允许通过ODBC数据源连接到各种数据库,包括Access。而Jackcess是一个开源库,专为直接操作Access数据库而设计,无需ODBC。 **步骤1:设置环境** 确保你的系统已经安装了JDBC...