JDBC数据库程序设计.doc_第1页
JDBC数据库程序设计.doc_第2页
JDBC数据库程序设计.doc_第3页
JDBC数据库程序设计.doc_第4页
JDBC数据库程序设计.doc_第5页
已阅读5页,还剩23页未读, 继续免费阅读

下载本文档

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

文档简介

实验与实训指导书课程名称:JDBC数据库程序设计第一章 概述一、实训总目的1 掌握C/S网络数据库的工作原理与结构2 掌握安装和配置JAVA的运行环境3 掌握配置系统数据库的运行环境和建ACCESS数据库4 掌握SQL语言的方法和使用5 掌握JAVA的JDBC数据库的编程方法6 掌握运用面向对象的程序设计方法开发程序二、实训内容和时间进程安排: 序号实 训 内 容学时实 训 时 间 安 排备 注1实训一 确定实训题目和内容:用JAVA实现C/S结构人员数据库的管理,学习JDBC的基础知识2第一周 星期一,8:0010:002学习JDBC数据库的Connection、DatabaseMetaData、ResultSetMetaData类和JDBC语句2第一周 星期二,8:0010:00,14:3017:003掌握建立、配置ACCESS数据库、表和建立系统数据库运行环境、安装配置JAVA的运行环境、学习Jbuilder 的基本使用方法4第一周 星期三,8:0010:00,14:3017:004掌握JDBC实现数据的连接、查询、添加、修改、删除的基本方法和语句4第一周 星期四,10:012:00,14:3017:005完成ACCESS数据库的建立、设置和系统数据库环境及JAVA运行环境和参数的设置8第一周 星期五,14:3017:006完成数据库连接、查询、添加、修改、删除模块的调试和整体联合调试4第二周 星期一,8:0012:00,14:3017:007完成数据库连接、查询、添加、修改、删除模块的调试和整体联合调试8第二周 星期二,8:0012:00,14:3017:008完成数据库连接、查询、添加、修改、删除模块的调试和整体联合调试8第二周 星期三,8:0010:00,14:3017:009检查学生提交的实验成果8第二周 星期四,8:0012:00,14:3017:0010检查学生提交的实验成果4第二周 星期五,8:0010:00,14:3017:0011- 29 -三、实训条件硬件:奔腾计算机,128M以上内存,40G硬盘软件:WINXP或WIN2000等系统环境,ACCESS数据库、JBUILDER、JAVA虚拟机场地:计算机机房四、实训成绩评定、考核办法实训成绩的评定依据两个方面:考勤成绩和考核成绩,前者占总评的10%,后者占总成绩的90%.考勤内容包括: 是否按时到场;是否按进度要求完成实训科目;是否认真填写实训日记;是否保持实训设备完好无损等。考核办法:1、建立数据库和配置系统的数据库调用环境 15%2、安装JAVA的软件和配置JAVA运行环境 15%3、实现对数据库表的修改、添加、删除、查询等功能 60%4、程序设计过程中的表现和出勤率 10%其中,各等级的评判标准为:优秀标准:圆满完成实训内容,在实训中有优秀表现的,成绩在90分以上的学生。良好标准: 圆满完成实训内容,成绩在75分以上的学生。及格标准:完成部分实训内容,成绩在60分以上的学生。不及格标准:没有参加实训或基本没有完成实训内容,成绩在60分以下的学生。第二章 实训内容题目:JAVA实现C/S结构网络数据库应用程序开发一、实训目的1、掌握C/S网络数据库的工作原理与结构2、掌握安装和配置JAVA的运行环境3、掌握配置系统数据库的运行环境和建ACCESS数据库4、掌握JAVA的JDBC数据库的编程方法5、掌握运用面向对象的程序设计方法开发程序二、实训理论基础1、 数据库基础知识。能熟练使用ACCESS数据库建立数据库,建立数据表,能利用SQL语言建立查询、添加、修改、删除数据记录。2、 能安装JAVA开发软件JBUILDER、JAVA虚拟机,配置操作系统数据库连接环境,配置JAVA程序运行环境。3、 JDBC的数据库类和JDBC语句,利用JDBC实现对数据库的连接、添加、修改、查询、删除等功能。4、 掌握基于JAVA面向对象的程序设计方法开发程序。5、 利用JBUILDER工具方便实现基于JAVA面向对象的程序设计开发程序。三、实训内容与步骤1、 建立数据库、数据库表,建立操作系统的数据库连接环境。打开ACCESS,在ACCESS中建立数据库People.mdb,在数据库中建立表,在表中输入部分数据。图1:建立数据库,在数据库中建立数据表图2:在建立的数据表中输入部分数据建立操作系统的数据库运行环境。打开系统的ODBC数据资源管理器,选择添加按钮,选取全面建立的数据库类型,选择建立好的数据库,给出使用时连接的别名,按高级选项按钮,输入登录的用户名和密码,具体如下图:图3:添加ODBC的DSN的新数据源图4: ODBC中连接建立的数据源图5: 输入用户登录名和密码2、 安装JAVA软件,配置JAVA应用程序运行的环境。安装完JUBLIDER和JAVA虚拟机之后,配置JAVA 运行环境配置,其过程如下:从桌面选择“我的电脑”(右键)-高级-环境变量,在其中选择“系统变量”的“新建”,在变量名中输入CLASSPATH,变量值中输入C:JDK13LIBDT.JAR;C:JDK13LIBBOOLS.JAR;C:JDK13BIN;然后确认。或者直接修改自动批处理文件AUTOEXEC.BAT文件,利用任何编辑器编辑该文件,加入如下语句:set classpath=c:jdk13libdt.jar;c:jdk13libtools.jar; c:jdk13bin;配置完成后,要重新启动计算机,环境变量才生效。3、 编写实现JAVA网络数据库应用程序。(一) 设计主窗口在Jbuilder中利用向导创建一个新的工程database.jpr和一个主窗体类MainFrame.java,并在MainFrame.java类的design视窗中加入GridControl和四个按钮“添加”、“删除”、“修改”和“退出”,并进行适当的布局,激活按钮的相应事件和GridControl的subfocusChanged事件,铜丝修改GridControl控件的标题保持数据库中一致(“姓名”、“性别”、“年龄”、“电话”、”备注”).最后得到的源程序清单如下:/*MainFrame.java*/package database;import java.awt.*;import java.awt.event.*;import borland.jbcl.layout.*;import borland.jbcl.control.*;import java.sql.*;import java.util.*;import borland.jbcl.model.*;public class MainFrame extends DecoratedFrame GridControl gridControl1 = new GridControl(); Button button1 = new Button(); Button button2 = new Button(); Button button3 = new Button(); Button button4 = new Button(); PaneLayout paneLayout1 = new PaneLayout(); public MainFrame() try jbInit(); catch (Exception e) e.printStackTrace(); private void jbInit() throws Exception this.setTitle(数据库实例); gridControl1.setColumnCaptions(new String 姓名, 性别, 年龄, 电话, 备注); button1.setLabel(增加); button1.addActionListener(new MainFrame_button1_actionAdapter(this); button2.setLabel(修改); button2.addActionListener(new MainFrame_button2_actionAdapter(this); button3.setLabel(删除); button3.addActionListener(new MainFrame_button3_actionAdapter(this); button4.setLabel(退出); button4.addActionListener(new MainFrame_button4_actionAdapter(this); this.setLayout(paneLayout1); this.add(gridControl1, new PaneConstraints(gridControl1, gridControl1, PaneConstraints.ROOT, 0.5f); this.add(button1, new PaneConstraints(button1, gridControl1, PaneConstraints.BOTTOM, 0.11522633f); this.add(button2, new PaneConstraints(button2, button1, PaneConstraints.RIGHT, 0.7428571f); this.add(button3, new PaneConstraints(button3, button2, PaneConstraints.RIGHT, 0.6818182f); this.add(button4, new PaneConstraints(button4, button3, PaneConstraints.RIGHT, 0.5589744f); gridControl1.setReadOnly(true); gridControl1.addSubfocusListener(new MainFrame_gridControl1_subfocusAdapter(this); public static void main(String args) MainFrame frame=new MainFrame(); frame.setLocation(150,150); frame.setSize(550,400); frame.show(); void button1_actionPerformed(ActionEvent e) void button2_actionPerformed(ActionEvent e) void button3_actionPerformed(ActionEvent e) void button4_actionPerformed(ActionEvent e) void gridControl1_subfocusChanged(MatrixSubfocusEvent e) class MainFrame_button1_actionAdapter implements java.awt.event.ActionListener MainFrame adaptee; MainFrame_button1_actionAdapter(MainFrame adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.button1_actionPerformed(e); class MainFrame_button2_actionAdapter implements java.awt.event.ActionListener MainFrame adaptee; MainFrame_button2_actionAdapter(MainFrame adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.button2_actionPerformed(e); class MainFrame_button3_actionAdapter implements java.awt.event.ActionListener MainFrame adaptee; MainFrame_button3_actionAdapter(MainFrame adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.button3_actionPerformed(e); class MainFrame_button4_actionAdapter implements java.awt.event.ActionListener MainFrame adaptee; MainFrame_button4_actionAdapter(MainFrame adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.button4_actionPerformed(e); class MainFrame_gridControl1_subfocusAdapter extends borland.jbcl.model.MatrixSubfocusAdapter MainFrame adaptee; MainFrame_gridControl1_subfocusAdapter(MainFrame adaptee) this.adaptee = adaptee; public void subfocusChanged(MatrixSubfocusEvent e) adaptee.gridControl1_subfocusChanged(e); (二) 建立数据库连接在MainFrame类的变量申明中加入对数据源操作的Connection对象和PreparedStatement对象,并在构造函数中对Connection变量进行初始化,建立和数据源”temp”的连接:Connection connection=null; PreparedStatement statement=null; public MainFrame() try jbInit(); Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); connection=DriverManager.getConnection(jdbc:odbc:temp); setGridControl(); catch (Exception e) e.printStackTrace(); (三) 显示数据库内容对数据库的访问,需要定义一个内存矢量来存放数据库中的数据,该内存矢量中的数据始终和数据库中保持一致,同时在进行增加、删除和修改操作时,一边修改数据库中的数据,一边修改内存矢量表中的数据,定义内存矢量为:Vector data=new Vector();则读取数据库中的数据到矢量表中程序为: String sql=select * from people; statement=connection.prepareStatement(sql); ResultSet result=statement.executeQuery(); while(result.next() String name=result.getString(name); String sex=result.getString(sex); int age=result.getInt(age); String phone=result.getString(phone); String other=result.getString(other); data.addElement(name); data.addElement(sex); data.addElement(Integer.toString(age); data.addElement(phone); data.addElement(other); result.close(); statement.close();然后需要将数据显示到GridControl控件中,利用GridControl控件的SetItems()方法,因为我们还需要定义一个临时数据租来对数据进行格式化从而可以直接输出到Gri8dControl控件中:int len=data.size()/5; String items=new Stringlen5; for(int i=0;ilen;i+) itemsi0=(String)data.elementAt(i*5); itemsi1=(String)data.elementAt(i*5+1); itemsi2=(String)data.elementAt(i*5+2); itemsi3=(String)data.elementAt(i*5+3); itemsi4=(String)data.elementAt(i*5+4); (四) 实现增加和修改记录功能对数据库中记录的增加和修改对话事实上相同的,区别仅仅在于修改对话框中具有初始化的该纪录数据而增加对话框的初始化数据为空。具体代码如下:图6:修改记录用户窗口/修改记录 void changeDatabase() try String sql=update people set sex=; sql+=textField2.getText()+,age=; sql+=textField3.getText()+,phone=; sql+=textField4.getText()+,other=; sql+=textField5.getText()+ where name=; sql+=textField1.getText()+; frame.statement=frame.connection.prepareStatement(sql); frame.statement.executeUpdate(); frame.statement.close(); /调用主窗体显示数据函数 frame.setGridControl(); this.dispose(); catch(Exception e) System.out.println(e.toString(); 图7:添加记录用户窗口 /增加记录 void addDatabase() try String sql=insert into people(name,sex,age,phone,other) values(; sql+=textField1.getText()+,; sql+=textField2.getText()+,; sql+=textField3.getText()+,; sql+=textField4.getText()+,; sql+=textField5.getText(); sql+=); frame.statement=frame.connection.prepareStatement(sql); frame.statement.executeUpdate(); frame.statement.close(); /调用主窗体显示数据函数 frame.setGridControl(); this.dispose(); catch(Exception e) System.out.println(e.toString(); (五) 完成主窗口事件设计1、 加事件在“添加”按钮事件中只需要直接显示增加对话框即可。InputDialog idlg=new InputDialog(this,添加新记录,true); idlg.setLocation(200,200); idlg.setSize(300,200); idlg.show();2、 修改事件“修改”按钮事件同“添加”按钮事件类似,但前者必须将对话框的编辑属性设为false(即不可编辑状态),同时需要修改的选定记录的有关数据显示在修改对话框中,并须改提示信息内容。InputDialog idlg=new InputDialog(this,添加新记录,true); idlg.textField1.setEditable(false); idlg.groupBox1.setLabel(请输入修改用户信息:); idlg.textField1.setText(String)data.elementAt(row*5); idlg.textField2.setText(String)data.elementAt(row*5+1); idlg.textField3.setText(String)data.elementAt(row*5+2); idlg.textField4.setText(String)data.elementAt(row*5+3); idlg.textField5.setText(String)data.elementAt(row*5+4); idlg.setLocation(200,200); idlg.setSize(300,200); idlg.show();3、 删除事件在“删除”按钮事件中应该提示用户是否确定删除,得到用户肯定后获取用户选定记录并调用PreparedStatement对象executeUpdate()方法删除,同时调用显示数据方法setGridControl()显示删除后数据库中的数据。MessageDialog mdlg=new MessageDialog(this,删除确认,你确定要删除该记录吗?,6); mdlg.show(); if(mdlg.getResult()=MessageDialog.NO) return; String name=(String)data.elementAt(row*5); String sql=delete from people where name=+name+; statement=connection.prepareStatement(sql); statement.executeUpdate(); statement.close(); setGridControl();4、 控件焦点改变事件在焦点改变事件中,用户把当前点中的记录的行和列信息保存在全局变量中,从而在“修改”和“删除”事件中可以得到但前用和所选中的记录信息。try MatrixLocation location=e.getLocation(); if(location=null) return; row=location.row; column=location.column; catch(Exception ee) (六) 整体设计代码图8:运行的主窗体用户窗口整体的应用程序如下:/*源代码清单MainFrame.java*/package database;import java.awt.*;import java.awt.event.*;import borland.jbcl.layout.*;import borland.jbcl.control.*;import java.sql.*;import java.util.*;import borland.jbcl.model.*;public class MainFrame extends DecoratedFrame GridControl gridControl1 = new GridControl(); Button button1 = new Button(); Button button2 = new Button(); Button button3 = new Button(); Button button4 = new Button(); PaneLayout paneLayout1 = new PaneLayout(); Connection connection=null; PreparedStatement statement=null; int row=0; int column=0; Vector data=new Vector(); public MainFrame() try jbInit(); Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); connection=DriverManager.getConnection(jdbc:odbc:temp); setGridControl(); catch (Exception e) e.printStackTrace(); private void jbInit() throws Exception this.setTitle(数据库实例); gridControl1.setColumnCaptions(new String 姓名, 性别, 年龄, 电话, 备注); button1.setLabel(增加); button1.addActionListener(new MainFrame_button1_actionAdapter(this); button2.setLabel(修改); button2.addActionListener(new MainFrame_button2_actionAdapter(this); button3.setLabel(删除); button3.addActionListener(new MainFrame_button3_actionAdapter(this); button4.setLabel(退出); button4.addActionListener(new MainFrame_button4_actionAdapter(this); this.setLayout(paneLayout1); this.add(gridControl1, new PaneConstraints(gridControl1, gridControl1, PaneConstraints.ROOT, 0.5f); this.add(button1, new PaneConstraints(button1, gridControl1, PaneConstraints.BOTTOM, 0.11522633f); this.add(button2, new PaneConstraints(button2, button1, PaneConstraints.RIGHT, 0.7428571f); this.add(button3, new PaneConstraints(button3, button2, PaneConstraints.RIGHT, 0.6818182f); this.add(button4, new PaneConstraints(button4, button3, PaneConstraints.RIGHT, 0.5589744f); gridControl1.setReadOnly(true); gridControl1.addSubfocusListener(new MainFrame_gridControl1_subfocusAdapter(this); public static void main(String args) MainFrame frame=new MainFrame(); frame.setLocation(150,150); frame.setSize(550,400); frame.show(); void setGridControl() try data.removeAllElements(); String sql=select * from people; statement=connection.prepareStatement(sql); ResultSet result=statement.executeQuery(); while(result.next() String name=result.getString(name); String sex=result.getString(sex); int age=result.getInt(age); String phone=result.getString(phone); String other=result.getString(other); data.addElement(name); data.addElement(sex); data.addElement(Integer.toString(age); data.addElement(phone); data.addElement(other); result.close(); statement.close(); int len=data.size()/5; String items=new Stringlen5; for(int i=0;ilen;i+) itemsi0=(String)data.elementAt(i*5); itemsi1=(String)data.elementAt(i*5+1); itemsi2=(String)data.elementAt(i*5+2); itemsi3=(String)data.elementAt(i*5+3); itemsi4=(String)data.elementAt(i*5+4); gridControl1.setReadOnly(false); gridControl1.setItems(items); gridControl1.setReadOnly(true); catch(Exception e) System.out.println(e.toString(); void button1_actionPerformed(ActionEvent e) InputDialog idlg=new InputDialog(this,添加新记录,true); idlg.setLocation(200,200); idlg.setSize(300,200); idlg.show(); void button2_actionPerformed(ActionEvent e) InputDialog idlg=new InputDialog(this,添加新记录,true); idlg.textField1.setEditable(false); idlg.groupBox1.setLabel(请输入修改用户信息:); idlg.textField1.setText(String)data.elementAt(row*5); idlg.textField2.setText(String)data.elementAt(row*5+1); idlg.textField3.setText(String)data.elementAt(row*5+2); idlg.textField4.setText(String)data.elementAt(row*5+3); idlg.textField5.setText(String)data.elementAt(row*5+4); idlg.setLocation(200,200); idlg.setSize(300,200); idlg.show(); void button3_actionPerformed(ActionEvent e) try MessageDialog mdlg=new MessageDialog(this,删除确认,你确定要删除该记录吗?,6); mdlg.show(); if(mdlg.getResult()=MessageDialog.NO) return; String name=(String)data.elementAt(row*5); String sql=delete from people where name=+name+; statement=connection.prepareStatement(sql); statement.executeUpdate(); statement.close(); setGridControl(); catch(Exception ee) System.out.println(ee.toString(); void button4_actionPerformed(ActionEvent e) System.exit(0); void gridControl1_subfocusChanged(MatrixSubfocusEvent e) try MatrixLocation location=e.getLocation(); if(location=null) return; row=location.row; column=location.column; catch(Exception ee) class MainFrame_button1_actionAdapter implements java.awt.event.ActionListener MainFrame adaptee; MainFrame_button1_actionAdapter(MainFrame adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.button1_actionPerformed(e); class MainFrame_button2_actionAdapter implements java.awt.event.ActionListener MainFrame adaptee; MainFrame_button2_actionAdapter(MainFrame adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.button2_actionPerformed(e); class MainFrame_button3_actionAdapter implements java.awt.event.ActionListener MainFrame adaptee; MainFrame_button3_actionAdapter(MainFrame adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.button3_actionPerformed(e); class MainFrame_button4_actionAdapter implements java.awt.event.Ac

温馨提示

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

评论

0/150

提交评论