韩顺平循序渐进学java从入门到精通课件笔记第七十讲到第七十三讲

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

由于对数据库操作后有很多重复代码.这样可以把操作封装成一个类,这个类可以完成对表的操作.第七十一讲:初步理解模式的概念(mv):增加项目的可维护性,尤其在做一个大项目的时候,如果没有一个好的方案的话,那么就会很悲剧了.软件开发也是一个渐进的过程./***写成一个ming版的学生管理系统*1,查询任务*2,添加学生*/packagecom.test1;importjava.awt.*;importjava.awt.event.*;importjava.sql.*;importjavax.swing.*;publicclassStudentManagementextendsJFrameimplementsActionListener{//定义一些控件JPaneljp1,jp2;JLabeljl;JButtonjb1,jb2,jb3,jb4;JTablejt;JTextFieldjtf;JScrollPanejsp=null;Connectionct=null;PreparedStatementps=null;StuModelsm=null;publicstaticvoidmain(String[]args){StudentManagementta=newStudentManagement();}publicStudentManagement(){jp1=newJPanel();jl=newJLabel(请输入名字:);jtf=newJTextField(20);jb1=newJButton(查询);//注册监听jb1.addActionListener(this);//把各个控件加入到jp1;jp1.add(jl);jp1.add(jtf);jp1.add(jb1);jp2=newJPanel();jb2=newJButton(添加);jb3=newJButton(修改);jb4=newJButton(删除);//注册监听jb2.addActionListener(this);jb3.addActionListener(this);jb4.addActionListener(this);jp2.add(jb2);jp2.add(jb3);jp2.add(jb4);//创建一个数据模型对象sm=newStuModel();//初始化JTablejt=newJTable(sm);//初始化jspjsp=newJScrollPane(jt);//吧jsp放进到JFramethis.add(jsp);this.add(jp1,BorderLayout.NORTH);this.add(jp2,BorderLayout.SOUTH);this.setSize(500,400);this.setLocation(200,200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}@OverridepublicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstub//判断是那个按钮被点击//如果相应与监听在同一个类中也可以用下面方法.if(e.getSource()==jb1){//System.out.println(用户希望查询);测试用的//因为把表的数据封装到StuModel中,我们就可以比较简单地完成查询任务Stringname=this.jtf.getText().trim();//写一个sql语句Stringsql=select*fromstudentwherestuName='+name+';//构建新的数据模型类并更新sm=newStuModel(sql);jt.setModel(sm);}//当用户点击添加elseif(e.getSource()==jb2){//合理应该为模式的状态,否则,还没有插完就会执行下面的语句,导致无法更新.StuAddDialogsad=newStuAddDialog(this,添加学生,true);//重新再获得新的数据模型sm=newStuModel();jt.setModel(sm);}elseif(e.getSource()==jb3){System.out.print(aaaa);intrownum=this.jt.getSelectedRow();if(rownum==-1){//提示JOptionPane.showMessageDialog(this,请选择一行);return;//代表不要再往下面走了,谁调用就返回给谁}//显示修改对话框newStudentUpdateDialog(this,修改对话框,true,sm,rownum);}//当前用户点击删除elseif(e.getSource()==jb4){//得到该学生的id//getSelectedRo会返回用户点击的行//如果一行都没选,则会返回-1intrownum=this.jt.getSelectedRow();if(rownum==-1){//提示JOptionPane.showMessageDialog(this,请选择一行);return;//代表不要再往下面走了,谁调用就返回给谁}//得到学生的编号StringstuId=(String)sm.getValueAt(rownum,0);//System.out.print(stuId);//测试用的//连接数据库,完成删除任务try{//加载驱动Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);//System.out.print(1);//测试用的//得到连接ct=DriverManager.getConnection(jdbc:sqlserver://127.0.0.1:1433;databaseName=spdb1,sa,h123);//System.out.print(2);//测试用的ps=ct.prepareStatement(deletefromstudentwherestuid='+stuId+');//System.out.print(3);//测试用的ps.executeUpdate();}catch(Exceptionex){ex.printStackTrace();}finally{try{if(ps!=null)ps.close();if(ct!=null)ps.close();}catch(SQLExceptione1){//TODOAuto-generatedcatchblocke1.printStackTrace();}}sm=newStuModel();jt.setModel(sm);}}}/***这是我的一个Student表的模型*可以把对student表的各种操作封装到该模型中*/packagecom.test1;importjava.sql.*;importjava.util.Vector;importjavax.swing.JTable;importjavax.swing.table.AbstractTableModel;publicclassStuModelextendsAbstractTableModel{VectorrowData,columnNames;JTablejt=null;//定义操作数据库需要的东西PreparedStatementps=null;Connectionct=null;ResultSetrs=null;publicvoidinit(Stringsql){if(sql==null){sql=select*fromstudent;}//中间处理jt=newJTable();columnNames=newVector();//设置列名columnNames.add(学号);columnNames.add(名字);columnNames.add(性别);columnNames.add(年龄);columnNames.add(籍贯);columnNames.add(系别);//rowData可以存放多行rowData=newVector();try{//加载驱动Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);//System.out.print(1);//测试用的//得到连接ct=DriverManager.getConnection(jdbc:sqlserver://127.0.0.1:1433;databaseName=spdb1,sa,h123);//System.out.print(2);//测试用的ps=ct.prepareStatement(sql);//System.out.print(3);//测试用的rs=ps.executeQuery();//System.out.print(4);//测试用的while(rs.next()){Vectorhang=newVector();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));//加入到rowDatarowData.add(hang);}//System.out.print(5);//测试用的}catch(Exceptione){e.printStackTrace();}finally{try{if(rs!=null)rs.close();if(ps!=null)ps.close();if(ct!=null)ct.close();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}//通过传递的sql语句来获得数据模型publicStuModel(Stringsql){init(sql);}//构造函数,初始化我们的数据模型publicStuModel(){this.init(null);}publicvoidaddStu(Stringsql){//根据用户输入的sql语句完成添加任务.}@OverridepublicStringgetColumnName(intcolumn){//TODOAuto-generatedmethodstubreturn(String)this.columnNames.get(column);}@Override//得到共有多少列publicintgetColumnCount(){//TODOAuto-generatedmethodstub//System.out.print(getColumnCount);//测试所用returnthis.columnNames.size();}@Override//得到共有多少行publicintgetRowCount(){//TODOAuto-generatedmethodstubreturnthis.rowData.size();}@Override//得到某行某列的数据publicObjectgetValueAt(introwIndex,intcolumnIndex){//TODOAuto-generatedmethodstubreturn((Vector)this.rowData.get(rowIndex)).get(columnIndex);}}packagecom.test1;importjava.awt.*;importjava.awt.event.*;importjava.sq

1 / 46
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功