




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/12/2,1,第5章JavaBean编程技术,2,内容提要,常用控件的综合应用菜单制作连接数据库嵌入SQL语句实现数据库编程数据的查询数据的更新(添加、删除、修改),3,常用控件综合应用,实现登录界面-Java建议使用swing组件替代AWT组件,称为轻型组件。增加难度:对用户名和密码为空时的判断,4,登录窗体编程要点,publicclassLoginextendsJFrameimplementsActionListenerprivateJTextFieldjt1;privateJPasswordFieldjt2;privateJButtonjb1,jb2;privateImageJPanelip2;privateJRadioButtonjr;publicstaticStringu,p;publicLogin()super(登录);this.setBounds(310,210,400,335);this.setResizable(false);this.setDefaultCloseOperation(EXIT_ON_CLOSE);ip2=newImageJPanel();ip2.setBounds(0,0,this.getWidth(),this.getHeight();this.add(ip2);jb1.addActionListener(this);jb2.addActionListener(this);this.setVisible(true);此处省略了其他控件的添加,5,单击登录事件的关键代码,publicvoidactionPerformed(ActionEvente)if(e.getSource()=jb1)/如果点击登录按钮Connectionconn=null;/数据库连接部分的初始化ResultSetrs;Statementst;if(jt1.getText().equals()JOptionPane.showMessageDialog(this,用户名不能为空);return;if(jt2.getText().equals()JOptionPane.showMessageDialog(this,密码不能为空);return;try/数据库连接Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver).newInstance();Stringurl=jdbc:microsoft:sqlserver:/:1433;DatabaseName=warehourse;Stringuser=sa;Stringpassword=sa;conn=DriverManager.getConnection(url,user,password);st=conn.createStatement();,6,登录后查询数据库表login,u=jt1.getText();p=jt2.getText();Stringz=null;for(inti=0;i0)JOptionPane.showMessageDialog(this,登录成功!);if(z.equals(管理员)newMainFrame();elsenewMainFrame2();this.dispose();elseJOptionPane.showMessageDialog(this,登录失败,用户名或密码正确!);,7,菜单和多文档界面,8,菜单制作要点,主要内容请参加Java教材6.3.7菜单组件下面介绍上例核心代码,publicclassMainFrameextendsJFrameimplementsActionListenerpublicImageJPanelip;/图像面板可加载背景图片publicMainFrame()super(主界面);this.setBounds(210,170,605,470);this.setResizable(false);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.addmyMenu();/调用自定义方法,添加菜单publicvoidaddmyMenu()/添加主菜单和各级子菜单JMenuBarjmb=newJMenuBar();this.setJMenuBar(jmb);/框架上添加菜单栏,9,菜单制作要点,主菜单和子菜单中的菜单项的添加,Stringmenu_1=添加信息,订单信息,查询信息,修改信息,执行,帮助;JMenumenu=newJMenumenu_1.length;/生成菜单数组munufor(inti=0;imenu.length;i+)menui=newJMenu(menu_1i);/生成菜单,标题为对应的字符串jmb.add(menui);/在菜单栏中添加菜单Stringaddxx=“添加仓库信息”,“添加设备信息”,“添加部门信息”,“添加职工信息,添加供应商信息;JMenuItemadd=newJMenuItemaddxx.length;/生成菜单项数组addfor(inti=0;ia.length;i+)addi=newJMenuItem(addxxi);addi.setIcon(newImageIcon(“icon/3.jpg”);/添加图标addi.addActionListener(this);/添加单击事件监听器menu0.add(ai);,10,菜单制作,添加分隔符以及单击事件处理方法,menu0.addSeparator();/添加分隔符JMenuItemext=newJMenuItem(退出);ext.setIcon(newImageIcon(icon/3.jpg);ext.addActionListener(this);menu0.add(ext);/省略其他菜单项的添加publicvoidactionPerformed(ActionEvente)if(e.getActionCommand()=退出)if(JOptionPane.showConfirmDialog(this,是否要退出工程)=0)System.exit(0);if(e.getActionCommand()=添加用户信息)newyonghuxx();/打开添加用户窗体./省略其他菜单项单击事件类似,11,JDBC的作用和功能,什么是JDBC(JavaDataBaseConnectivity,Java数据库连接)是基于Java的、用于访问关系数据库的应用程序编程接口。JDBC驱动程序类型JDBC-ODBC桥驱动程序:不易于移植,速度慢本地库Java实现驱动程序:不具有跨平台性网络协议驱动程序:适于分布式应用,涉及安全性数据库协议驱动程序:纯java,跨平台,速度快,是首选方式,12,JDBC驱动程序类型及其工作原理,13,JDBC的基本功能、组成和工作原理,14,指定JDBC驱动程序,第一步:选择和安装JDBC驱动程序首选是纯java的数据库协议驱动程序如果是Access数据库只能用JDBC-ODBC桥驱动JDBC-ODBC桥驱动方式JDBC-ODBC桥驱动程序类是sun.jdbc.odbc.JdbcOdcDriver,JDK默认安装需要在配置ODBC数据源纯java的数据库协议驱动方式需要在MyEclipse中添加相应的DBMS的JDBC驱动程序包,15,指定JDBC驱动程序,第二步:在应用程序中指定JDBC驱动程序publicstaticClassforName(StringclassName)throwsclassNotFoundException举例如下:Class.forName(“sun.jdbc.odbc.JdbcOdcDriver”);Class.forName(com.mysql.jdbc.Driver);Stringdriver=com.microsoft.jdbc.sqlserver.SQLServerDriver;Class.forName(driver);/指定SQLServer2000的JDBC驱动程序请注意sqlserver2005中加载驱动的语句则为com.microsoft.sqlserver.jdbc.SQLServerDriver;,16,数据库的连接和使用,常用的接口和类包括:DriverManager类Connection类Statement类ResultSet类,17,DriverManager类,DriverManager类创建与指定数据库连接getConnection()方法装载驱动程序,并与数据源连接publicstaticConnectiongetConnection(Stringurl)throwsSQLExceptionpublicstaticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throwsSQLException使用url表示JDBC驱动程序和数据源的位置,格式为jdbc:子协议:数据源Connectionconn=DriverManager.getConnection(“jdbc:odbc:student_access”);/jdbc-odbc方式Connectionconn=DriverManager.getConnection(jdbc:mysql:/localhost/student?user=root/MySQL,18,DriverManager类,SQLServer2000数据库的连接Stringurl=jdbc:microsoft:sqlserver:/:1433;DatabaseName=warehourse;Stringuser=sa;Stringpassword=sa;conn=DriverManager.getConnection(url,user,password);SQLServer2005数据库的连接URL=jdbc:sqlserver:/localhost:1433,19,Connection接口管理连接对象,publicinterfaceConnectionStatementcreateStatement()throwsSQLException;/创建执行SQL的语句对象StatementStatementcreateStatement(intresultSetType,intresultSetConcurrency)throwsSQLException;/参数指定结果集属性voidclose()throwsSQLException;/关闭数据库连接booleanisClosed()throwsSQLException;/判断数据库连接是否已关闭DatabaseMetaDatagetMetaData()throwsSQLException;/获取所连接数据库的元数据,20,DatabaseMetaData接口获得数据库元数据,publicinterfaceDatabaseMetaDataStringgetURL()throwsSQLException;/返回连接数据库的URLStringgetUserName()throwsSQLException;/返回数据库的用户名StringgetDatabaseProductName()throwsSQLException;/返回数据库名称StringgetDatabaseProductVersion()throwsSQLException;/返回数据库版本号StringgetDriverName()throwsSQLException;/返回驱动程序名称StringgetDriverVersion()throwsSQLException;/返回驱动程序版本号【例11.3】连接指定数据库并获得数据库属性信息。,21,执行SQL语句,Statement接口及其方法声明如下:publicinterfaceStatementintexecuteUpdate(Stringsql)throwsSQLException;/执行数据定义和数据更新SQL语句ResultSetexecuteQuery(Stringsql)throwsSQLException;/执行数据查询SQL语句booleanexecute(Stringsql)throwsSQLException;/执行SQL语句intgetUpdateCount()throwsSQLException;/获得数据更新所影响的行数ResultSetgetResultSet()throwsSQLException;/获得数据查询结果集voidclose()throwsSQLException;/关闭语句,Statement接口管理和执行SQL语句ResultSet接口存储数据查询返回的结果集,22,执行SQL语句,执行数据定义和数据更新SQL语句Statementstmt=conn.createStatement();Stringsql=INSERTINTOstuinfo(stu_id,stu_name)VALUES(98111041,李伟);intresult=stmt.executeUpdate(sql);/返回影响的行数1执行数据查询SQL语句Stringsql=SELECT*FROMstuinfo;ResultSetrset=stmt.executeQuery(sql);执行SQL语句一般用上述两种方法当不能确定SQL语句的类别,调用execute()方法,返回布尔型;调用getResultSet()方法获得数据查询结果集调用getUpdateCount()方法获得数据更新所影响的行数。,23,处理数据查询的结果集,ResultSet接口存储结果集intgetRow()throwsSQLException;/当前行位置booleanfirst()throwsSQLException;/第一行为当前行booleanprevious()throwsSQLException;/向上一行booleannext()throwsSQLException;/向下一行由于ResultSet接口没有获得结果集总行数的方法,所以需要采用循环语句处理每行数据或者统计行数introws=0;while(rset.next()rows+;/获得结果集总行数需要再次处理该结果集,则可以调用previous()反向迭代,或者用beforeFirst()将指针指向第一行之前;,24,获得当前行指定列的数据项值,ObjectgetObject(intcolumnIndex)throwsSQLException;ObjectgetObject(StringcolumnName)throwsSQLException;StringgetString(intcolumnIndex)throwsSQLException;StringgetString(StringcolumnName)throwsSQLException;例如,获得结果集rset第1列的全部数据项while(rset.next()System.out.println(rset.getString(1);,25,ResultSetMetaData接口获得结果集元数据,publicinterfaceResultSetMetaDataintgetColumnCount()throwsSQLException;/返回列数StringgetColumnName(intcolumn)throwsSQLException;/返回列名StringgetColumnTypeName(intcolumn)throwsSQLException;/返回列数据类型名intgetColumnDisplaySize(intcolumn)throwsSQLException;/返回列所占的最大字符宽度ResultSetMetaDatarsmd=resultset.getMetaData();intcolumnCount=rsmd.getColumnCount();/获得列数【例11.5】使用JTable显示数据查询的结果集。注意,这里的查询比较简单,即输出所有数据。如果按照条件查询呢?,26,使用JTable显示数据查询的结果集。,privateJTablequery(Stringtable)throwsSQLException,ClassNotFoundExceptionStringdriver=com.microsoft.jdbc.sqlserver.SQLServerDriver;Stringurl=jdbc:microsoft:sqlserver:/:1433;DatabaseName=warehourse;Class.forName(driver);/指定JDBC驱动程序,27,使用JTable显示数据查询的结果集,Stringuser=sa;Stringpassword=sa;this.conn=DriverManager.getConnection(url,user,password);Stringsql=“selectuser1as用户名,passwrdas密码,zzas登录身份from”+table;/通过取别名实现中文列名Statementstmt=this.conn.createStatement(1005,1007);/创建语句对象,1005表示结果集可滚动,对数据更新敏感,1007表示数据只读ResultSetrset=stmt.executeQuery(sql);/执行数据查询SELECT语句ResultSetMetaDatarsmd=rset.getMetaData();/返回元数据对象intcolumns=rsmd.getColumnCount();/获得列数Stringcolumnties=newStringcolumns;/创建列名数组for(intj=1;j=columns;j+)columntiesj-1=rsmd.getColumnLabel(j);/获得列名introws=0;while(rset.next()/迭代遍历结果集,获得结果集总行rows+;rset.beforeFirst();/移动指针到第一行之前,28,使用JTable显示数据查询的结果集,Stringresults=newStringrowscolumns;/创建二维数组保存数据结果集for(inti=0;rset.next();i+)/从前向后访问,获得每行数据for(intj=1;j=columns;j+)resultsij-1=rset.getString(j);/获得当前行指定列的值rset.close();stmt.close();returnnewJTable(results,columnties);,29,使用JTable显示条件查询的关键代码,publicvoidactionPerformed(ActionEvente)if(e.getSource()=jb)/单击查询按钮执行查找Stringstr=jtUser.getText();/输入的用户名if(str.equals()JOptionPane.showMessageDialog(null,查询内容不能为空!);return;Connectionconn;try/数据库连接省略conn=DriverManager.getConnection(url,user,password);Stringsql;sql=selectuser1as用户名,passwrdas密码,zzas登录身份fromLoginwhereuser1like%+str+%;/查询的实现并且显示在表格中参照前面的例子,此处省略returnnewJTable(results,columnties);catch(SQLExceptionSQLe)System.out.println(SQLe.getStackTrace();或者JOptionPane.showMessageDialog(this,SQLe.toString();,30,通过ResultSet结果集更新表,通过结果集更新表,必须在创建Statement对象时指定结果集的属性即创建带参数的statementStatementcreateStatement(intresultSetType,intresultSetConcurrency)throwsSQLException;参数resultSetType表示结果集是否可滚动,取值为intTYPE_FORWARD_ONLY=1003/默认值,只能向后intTYPE_SCROLL_INSENSITIVE=1004/可滚动,更新不敏感就是如果数据库里的数据修改过,并不在ResultSet中反应出来intTYPE_SCROLL_SENSITIVE=1005/可滚动,更新敏感参数resultSetConcurrency表示结果集能否更新表IntCONCUR_READ_ONLY=1007/只读,默认值IntCONCUR_UPDATABLE=1008/可更新用Jtable显示数据必须用带参数的statementTYPE_SCROLL_SENSITIVE=1005/可滚动,更新敏感例如:Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);,31,ResultSet接口数据敏感和可更新功能的方法,voidupdateRow()throwsSQLException;voidinsertRow()throwsSQLException;voiddeleteRow()throwsSQLException;,32,添加数据的关键代码,33,添加数据的关键代码,publicvoidactionPerformed(ActionEvente)if(e.getSource()=jb1)if(jt1.getText().equals()JOptionPane.showMessageDialog(this,用户号不能为空);return;if(!jt4.getText().equals(jt2.getText()JOptionPane.showMessageDialog(this,两次密码
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 特高压铁塔生产项目环境影响报告书
- 英语基础试题及答案下载
- 2025光纤采购合同
- 300MW风力发电项目节能评估报告
- 基础写作试题及答案大全
- 高效设施农业园项目施工方案
- 加油气站安全管理协议书7篇
- 中心静脉压的监测及护理考试试题及答案
- 江干区社区标识施工方案
- 2025年演出经纪人之演出经纪实务考试题库附参考答案综合题
- QA出货检验日报表
- 《婴幼儿常见病识别与应对》3.5 消化系统常见病防治与护理
- 加润滑油安全操作规程
- 萨福双脉冲气保焊说明书DIGIPLUS课件
- 高中期中考试家长会PPT课件 (共51张PPT)
- JJG 573-2003膜盒压力表
- GB/T 39634-2020宾馆节水管理规范
- GB/T 13234-2018用能单位节能量计算方法
- 营业线施工单位“四员一长”施工安全知识培训考试题库
- 紧急采购申请单
- 工程地质学:第7章 岩体结构及其稳定性
评论
0/150
提交评论