第五章 教案.doc_第1页
第五章 教案.doc_第2页
第五章 教案.doc_第3页
第五章 教案.doc_第4页
第五章 教案.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

复习JDBC的概念;JDBC的安装及配置方法;Java连接数据库的两种方法;利用JDBC实现数据库应用程序的基本操作。导入新课在JBuilder中我们除了可以使用Java的JDBC API进行数据库系统的开发,还可以利用JBuilder提供的数据库组件进行更为高效、快捷的开发。新授第5章 任务三:实现大案例的数据库操作(2)重点 基于JBuilder的数据库组件的应用程序体系结构 JBuilder的常用的数据库组件的使用 利用JBuilder的数据库组件实现大案例的数据库操作5.1 基于JBuilder的数据库组件的数据库系统体系结构基于JBuilder的数据库组件的数据库应用程序的典型体系结构如图所示。5.2 DataExpress常用组件的使用5.2.1 DataExpress组件简介使用DataExpress组件进行数据库操作的步骤与使用JDBC API相同,基本过程如下:1) 建立与数据库的连接。利用DataExpress组件中的Database组件。2) 通过执行SQL语句实现所需的数据库操作。利用DataExpress组件中的QueryDataSet组件执行SQL语句。3) 如果执行的是查询操作,则将产生结果集,需要对结果集进行处理。DataExpress组件中对查询结果集中的数据进行访问的方法也都封装在QueryDataSet组件中。5.2.2 Database组件及其使用Database组件为基于JDBC的数据库连接管理组件,作用与JDBC API中的Connection类相似,即用于建立与数据库的连接。所有基于JDBC的数据库程序中必须使用Database组件。1、Database组件的添加在文件的Design模式下,从DataExpress选项卡中选择Database组件,单击内容窗格或者结构窗格的任何位置,则在Data Access目录下添加Database对象,默认第一个对象的名字为database1,若创建第二个,则默认命名为database2,依此类推。2、Database组件对象的设置假设我们要通过database1对象实现与大案例中我们使用的数据库相连,即连接位于本机的SQL Server2008中的CampusCommunications数据库。需要做如下设置:从结构窗格中选择database1,在属性面板中点击connection属性,单击connection属性边的按钮,弹出Connection属性设置对话框,需要设置的属性含义与创建JDBC API中的Connection对象所需的参数意义相同:l Driver:设置连接数据库所需要使用的数据库驱动程序类,可以点击输入框右侧的下拉按钮进行选择。l URL:要连接的数据库的URL。l User name:登陆数据库的用户名。l Password:登陆数据库的密码。3、Database组件的常用方法方法名方法功能executeStatement(String sql)执行sql语句saveChanges(DataSet dataset)将dataSet中的结果保存到数据库中openConnection()打开连接closeConnection()关闭连接5.2.3 QueryDataSet组件及其使用QueryDataSet组件是一个基于JDBC的DataSet组件,用来执行SQL语句,实现对数据库的查询、插入、修改、及删除等操作。1、QueryDataSet组件的添加2、QueryDataSet组件对象的设置例如,我们设置queryDataSet1,通过前面已创建好的database1对象实现对CampusCommunications数据库中的userinfo表中uername、password两列数据的查询:Query属性设置对话框中属性含义:Database:用于设置queryDatSet1所使用的数据库连接对象。SQL statement:设置queryDatSet1对象将要执行的SQL查询语句。Load options:设置装载记录行到数据集对象的方式。3、QueryDataSet组件的常用方法注意QueryDataSet与JDBC API中的ResultSet不同的一点:刚产生的数据集的游标位置:ResultSet指向第一条之前;而QueryDataSet指向第一条。方法分类方法名功能定位数据集记录方法goToRow(int row)将游标移动到指定行(第一行为0)rowCount()获得数据集的记录条数first()将游标移动到第一行last()将游标移动到最后一行next()将游标移动到当前记录的下一条记录获取数据集记录的字段值的方法getString(String columnName)以String值的形式获取数据集当前记录中列名为columnName的列的值getInt(String columnName)以int值的形式获取数据集当前记录中列名为columnName的列的值getDouble(String columnName)以double值的形式获取数据集当前记录中列名为columnName的列的值修改数据集记录的字段值的方法setString(String columnName,String value)设置当前记录中列名为colunmName的字段的值为String型的value值setInt(String columnName,int value)设置当前记录中列名为colunmName的字段的值为int型的value值setDouble(String columnName,double value)设置当前记录中列名为colunmName的字段的值为double型的value值插入空记录方法InsertRow(boolean before)向数据集中插入一条空记录。若before值为true,则在当前记录之前插入,若为false,则在当前记录之后插入其他常用方法excuteQuery()向指定的database执行设定的SQL语句open()打开数据集close()关闭数据集Refresh()重新执行设定的SQL语句,获取最新结果集5.2.4 利用Database和QueryDataSet组件实现大案例的登陆下面我们利用利用上述的database1和queryDataSet1来实现大案例中的登陆功能,即通过database1连接数据库后,利用queryDataSet1来查看表userinfo中是否存在与输入的用户名和密码相同的记录。操作如下:1、组件的添加和设置2、事件处理登陆按钮的事件处理关键代码如下: /执行查询,得到数据集/注意,因为queryDataSet1打开后游标即指在第一条记录上,所以循环应采用do-while/模式 queryDataSet1.executeQuery(); do if(queryDataSet1.getString(username).equals(username)&queryDataSet1.getString(password).equals(password) MainFrame f = new MainFrame(username); f.setVisible(true); this.dispose(); return; while(queryDataSet1.next(); JOptionPane.showMessageDialog(this,用户名或者密码错误!);5.2.5 ParameterRow组件及其使用ParameterRow组件用来为QueryDataSet传递查询参数,一个Parameter对象可以同时传递多个参数。1、ParameterRow组件的添加2、为ParameterRow组件对象添加字段被添加的字段将作为查询条件。需要为添加的字段设置colunmName、dataType等属性。columnName属性用于定义ParemeterRow对象中字段的列名,即将要传递的参数的名字;dataType属性定义对应的字段的数据类型。3、在QueryDataSet对象中进行设置Parameters属性在LogonFrame的Design模式下从结构面板中选中queryDataSet1,从右侧的属性面板中选择query属性,单击query属性边的按钮,弹出Query属性设置对话框。点击Query属性对话框中的parameters标签,从下拉列表中选择我们刚添加的parameterRow1来为queryDataSet1传递参数。点击Query属性对话框中的Query标签,重新设置SQL statement语句为:select * from userinfo where username=:username and password=:passwordwhere子句中的“:username”和“:password”表示此处将分别引用parameterRow1中的username字段和password字段,即将利用parameterRow1实现这两个参数的传递。4、登陆按钮的事件处理关键代码如下: /设置参数值 parameterRow1.setString(username,username); parameterRow1.setString(password,password); /执行查询,获取数据集 queryDataSet1.executeQuery(); if(queryDataSet1.rowCount()0) MainFrame f = new MainFrame(username); f.setVisible(true); this.dispose(); else JOptionPane.showMessageDialog(this,用户名或者密码错误!); 5.3 dbSwing常用组件的使用5.3.2 常用的dbSwing组件1、JdbTable组件数据库表格组件,能以表格形式显示与该组件相关联的dataSet中的数据内容,并提供对数据进行操作的方法,例如记录的插入、删除、单元格数据的编辑、按表格字段的记录排序以及数据显示格式的控制等等。JdbTable组件一般与TableScrollPane或者JScrollPane组件配合使用。TableScrollPane继承自JScrollPane,作用也是为JdbTable组件提供滚动功能。2、导航类组件导航类组件为dataSet组件提供导航功能。最为常用的两个数据库导航组件是JdbNavToolBar组件和JdbNavField组件。JdbNavToolBar组件即导航工具栏为数据集提供完整的记录导航功能,另外还提供记录的插入、删除、保存、刷新等功能。JdbNavField即导航字段,可以根据数据集中某个字段的值定位记录,实现数据表记录的方便的查询。例如在JdbNavField中输入待查找的用户名后,即可定位到该用户的记录。3、JdbStatusLabel组件JdbStatusLabel组件为数据库状态组件,用于显示数据集dataSet的记录的总和及当前所在的记录号,或当前所做的操作状态等信息。5.3.3 利用dbSwing组件实现大案例的聊天记录查询功能我们将大案例的查看聊天记录窗体修改如图所示。窗体左侧仍然利用JList对象实现好友的选择,窗体右侧改为以JdbTable的形式显示聊天记录,并采用JdbNavToolBar组件对聊天记录进行导航,利用JdbStatusLabel组件显示数据集状态。1、图形用户界面的实现2、数据库组件的设置在parameterRow1中添加两列如下,分别用于传递当前登陆的用户名及好友名。columnNamedataTypeusernameSTRINGfriend_usernameSTRING在Parameters标签下,选择parameterRow1对象;在Query标签下选择使用的Database对象为database1;在Query标签下设置SQL Statements为:SELECT send_username,receive_username,message,time FROM message where send_username =:username and receive_username =:friend_username or send_username =:friend_username and receive_username =:username设置jdbTable1、jdbNavToolBar1、jdbStatusLabel1的dataSet属性均为queryDataSet1。3、界面事件处理 if (e.getClickCount() = 2) /获取选择的好友名 String friend_username= jList1.getSelectedValue().toString(); /设置参数值 parameterRow1.setString(username,username); parameterRow1.setString(friend_username,friend_username); /执行查询 queryDataSet1.executeQuery(); 5.4 利用JBuilder的数据库组件实现大案例的数据库操作5.4.1 RegisterFrame中数据库操作的实现1、数据库组件的添加及设置2、在界面中的下拉列表中显示数据库中的系名jbInit()方法的最后添加如下代码实现jComboBox5中选项的添加:Vector v=new Vector();queryDataSet1.executeQuery();/从数据库中获取系名,添加到向量v中do v.add(queryDataSet1.getString(department_name);while(queryDataSet1.next();/以向量v中的数据为选项创建下拉列表jComboBox5jComboBox5=new JComboBox(v);注意:要把对jComboBox5的操作的其他代码都移动到以上创建代码之后。否则运行时会抛出空指针异常。3、界面事件处理“注册”按钮的事件处理方法如下: /查询用户输入的用户名是否重名 queryDataSet2.executeQuery(); do if(username.equals(queryDataSet2.getString(username) JOptionPane.showMessageDialog(this,用户名重复,请重新输入!); return; while(queryDataSet2.next(); /查询系编号(department_ID) String department_ID=; queryDataSet1.executeQuery(); do if(department_name.equals(queryDataSet1.getString(department_name) department_ID=queryDataSet1.getString(department_ID); while(queryDataSet1.next(); /将用户注册信息存入数据集 queryDataSet2.last(); queryDataSet2.insertRow(false); queryDataSet2.setString(username,username); queryDataSet2.setString(password,password); queryDataSet2.setString(name,name); queryDataSet2.setString(sex,sex); queryDataSet2.setInt(age,age); queryDataSet2.setString(birthAnimal,birthAnimal); queryDataSet2.setString(bloodType,bloodType); queryDataSet2.setString(department_ID,department_ID); /将用户注册信息存入数据库 database1.saveChanges(queryDataSet2); JOptionPane.showMessageDialog(this,恭喜注册成功!请登陆系统!); /关闭注册窗体 this.dispose();5.4.2 MainFrame中好友列表的显示1、数据库组件的添加及设置在MainFrame中添加Database组件的对象database1,QueryDataSet组件的对象queryDataSet1,ParameterRow对象parameterRow13、好友列表的显示在MainFrame的jbInit()方法的最后添加如下代码以实现好友列表的显示:/将登陆的用户名传给parameterRow1parameterRow1.setString(username,username);/执行查询queryDataSet1.executeQuery();/从数据集中获取好友名单,存储在v中do v.add(queryDataSet1.getString(friend_username);while(queryDataSet1.next();/将v设定给jList1显示jList1.setListData(v);5.4.3 ChatPanel中聊天功能的实现1、数据库组件的添加及设置在ChatPanel中需要向message表中保存聊天信息,所以需要添加Database对象database1,QueryDataSet对象queryDataSet1。3、“发送”按钮的事件处理方法当点击“发送”按钮时,除了将聊天消息在文本区中显示外,还要将聊天消息记录到数据库的message表中去。public void jButton2_actionPerformed(ActionEvent e) /获取好友名 String receive_username=f.jList1.getSelectedValue().toString(); String message=jTextArea2.getText(); /将发送信息在文本区显示 jTextArea1.append(to +receive_username+:+message+n); /获得时间 Timestamp ts=this.getTimestamp(); /执行查询,获得数据集 queryDataSet1.executeQuery(); /在数据集的最后插入空行 queryDataSet1.last(); queryDataSet1.insertRow(false); /向数据集录入数据 queryDataSet1.setString(send_username,username); queryDataSet1.setString(receive_username,receive_username); queryDataSet1.setString(message,message); queryDataSet1.setTimestamp(time,ts); /将isoffline列的数据均设为false queryDataSet1.setBoolean(isoffline,false); /保存数据集 database1.saveChanges(queryDataSet1); jTextArea2.setText();/自定义获取时间的方法public Timestamp getTimestamp() Calendar c=Calendar.getInstance(TimeZone.getTimeZone(asia/shanghai); Timestamp ts=new Timestamp(c.getTimeInMillis(); return ts;5.4.4 AddFriendDialog中添加好友功能的实现1、数据库组件的添加及设置添加Database对象database1,两个QueryDataSet对象queryDataSet1、queryDataSet2,ParameterRow对象parameterRow1。queryDataSet1在在Query属性对话框的Parameters标签下选择parameter1, queryDataSet2在Query属性对话框的Parameters标签下选择parameter1,parameterRow1的属性设置如下:columnNamedataTypeusernameSTRING2、“确定”按钮的事件处理方法public void jButton1_actionPerformed(ActionEvent e)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论