数据库查询系统.pdf

上传人:g****s 文档编号:86069055 上传时间:2023-04-13 格式:PDF 页数:16 大小:1.11MB
返回 下载 相关 举报
数据库查询系统.pdf_第1页
第1页 / 共16页
数据库查询系统.pdf_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《数据库查询系统.pdf》由会员分享,可在线阅读,更多相关《数据库查询系统.pdf(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 计算机08 级 JAVA 程序设计高级语言 课程设计报告 1 目 录 数据库通用查询系统.1 题目简介:.1 2.1 设计的内容、要求和目标.2 2.2 总体设计.2 3.1 操作界面设计.4 3.2 类成员变量及方法设计.5 3.3 数据库设计.7 3.4 源代码分析.8 3.4.1 DatabaseServer 类 .8 3.4.2 ServerThread 类 .9 3.4.3 DatabaseClient 类 .11 4 系统运行及使用说明.15 总 结 .15 数据库通用查询系统 题目简介:JAVA Applet(or JFrame)通过套接字连接和服务器端的JAVA 应用程序实现

2、通信。程序将表的名字、表中字段的个数及查询条件提交给服务器,服务器端的JAVA程序进行查询操作,并将查询结果返回给JAVA Applet(or JFrame)程序。当仅查询数据表中的记录时,我们可以不必知道表中字段的属性,因为无论字段是何种属性,总可以使用getString(int coiumnIndex)或getString(String columnName)方法返回字段值的字符表示。另外,无论字段是何种属性,SQL 语句的LIKE 子语句允许字段值以字符串形式与其他字符串比较。主要内容:设计要求 总体设计 详细设计 代码调试 软件开发 计算机08 级 JAVA 程序设计高级语言 课程设计

3、报告 2 课程设计题目 2.1 设计的内容、要求和目标 当仅仅查询数据库表中的记录时,我们可以不必知道表中字段的属性,因为无论字段还是何种属性,总可以使用getString(int columnIndex)或getString(String columnName)方法返回字段值的字符串表示。另外,无论字段是何种属性,SQL语句的LIKE 子语句允许字段值以字符串形式与其他字符串进行匹配比较。基于以上所述,要求设计一个B/S 模式的数据库通用查询系统,具体要求如下:(1)客户端Java Applet 程序从加载该Java Applet 程序的html 文件中获取数据库中的表的名字、表的字段名字以

4、及表中字段的个数。这样一来,当需要修改html 文件,而不必修改Java Applet 程序,使得Java Applet 在查询数据库时具有了通用性。(2)Java Applet 通过套接字连接和服务器端的Java 应用程序实现通信。Java Applet 程序将表的名字、表中字段的个数以及查询条件提交给服务器,服务器端的 Java 应用程序进行查询操作,并将查询结果返回Java Applet 程序。2.2 总体设计 在设计数据库通用查询系统时,需要编写3 个 Java 源文件:DatabaseServer.java、ServerThread.java和DatabaseClient.java。

5、其中DatabaseServer.java和ServerThread.java 为服务器端Java 程序编译产生所需要的类;DatabaseClient.java为客户端Java Applet 程序编译产生所需要的类。数据库通用查询系统除了需要编写3 个 Java 源文件所编译产生的类外,还需要Java 系统提供的一些重要的类。数据库通用查询系统所用到的一些重要的类以及它们之间的组合关系如图12.1和图12.2 所示。图 12.1 客户端类之间的组合关系 DatabaseClientChoSocCheckbTextAr 计算机08 级 JAVA 程序设计高级语言 课程设计报告 3 图 12.2

6、 服务器端类之间关系 2.1 数据库(服务器端)设计的数据库的名字是book.mdb,在该库中所创建的表是bookform。2.2 DatabaseServer.java(服务器端主类)DatabaseServer 类创建的对象负责响应客户请求,该类含有main方法,服务器端从该类开始执行。DatabaseServer 类的成员变量中有3 种重要类型的对象:ServerSoket、Soket 和 ServerThread对象。运行效果如下图所示 DatabaseServer 类运行效果 2.3 ServerThread.java(服务器端)ServerThread 类是Thread 类的子类,

7、在Server 类中负责为请求连接的用户启动一个线程对象。2.4 DatabaseClient.java(客户端主类)DatabaseClient 是 Applet 类的子类,尽管DatabaseClient 类需要驻留在服务器端,但它需要下载到客户端的浏览器来运行,因此Java Applet 是客户端程序。DatabaseClient 类的成员变量中有四种重要类型的对象:Choice、Checkbox、TextArea 和 Socket 对象。运行效果如下图所示:DatabaseClient Choice Checkbox TextArea Socket 计算机08 级 JAVA 程序设计高

8、级语言 课程设计报告 4 图 2.4 DatabaseClient 创建的JFrame 及主要的成员对象3 详细设计及实现 3.1 操作界面设计 (a)客户端运行效果 TextArea Choice Checkbox 计算机08 级 JAVA 程序设计高级语言 课程设计报告 5 (b)服务器端运行效果 3.2 类成员变量及方法设计 图 12.1 N-S 流程图 (1)数据库设计 计算机08 级 JAVA 程序设计高级语言 课程设计报告 6 JDBC 操作不同的数据库仅仅是连接方式上的不同,我们使用Microsoft Access 数据库管理系统创建一个名字为book.mdb 的数据库。建立数据

9、库 选择Windows 2000/XP 系统桌面上的“开始”“所有程序”Microsoft Access 命令,启动数据库管理系统。然后选择新建数据库。将新建的数据库命名为 book.mdb,并保存到D:ch12 目录中。创建表 创建好数据库后,就可以在该数据库下建立若干个表。在book.mdb 数据库中创建名为bookform的表。Bookform表的字段(属性)为:ISBN(文本)name(文本)publisher(文本),data(日期)price(数字)其中ISBN 字段为主键。设置数据源 选择“控制面板”“管理工具”“ODBC 数据源”命令。双击ODBC数据源图标,将book.mdb

10、 设置为名字是myDataSource 的数据源。(2)DatabaseServer 类 成员变量 server 是 ServerSocket 对象,负责等待接受客户的套接字请求,当有客户请求套接字连接时,server 将接受用户的请求,并调用accept()方法返回服务器端所建立的Socket 对象you,即建立服务器端套接字和客户端套接字的连接。you 是Socket 对象,该对象是驻留在服务器端的套接字对象,由server 调用accept()方法所返回。yourAddress 是 InetAddress 对象,负责存放客户端的IP。方法 DatabaseServer()是构造方法。Da

11、tabaseServer 对象调用startServer(int port)方法响应客户的请求。main方法是程序运行的入口方法。(3)ServerThread 类 成员变量 con是 Connection对象,负责和数据库建立连接。stmt 是 Statement 对象,负责向数据库发送SQL 语句。rs 是 ResultSet 对象,负责存储从数据库查询到的记录。socket 是 Socket 对象。yourAddress 是 InetAddress 对象,负责存放客户端的IP。方法 ServerThread(Socket)是构造方法,当使用该构造方法创建线程时,通过该方法的参数将Serv

12、er 类中的you对象传递给ServerThread 类中的socket。run()方法是ServerThread 类重写父类Thread 的方法,给了怎么响应用户请求的具体内容。计算机08 级 JAVA 程序设计高级语言 课程设计报告 7(4)DatabaseClient 类 成员变量 choice 是 Choice 创建的下拉列表,负责存放数据库表的字段的文本解释。“完全一致”、“前方一致”、“后方一致”和“中间包含”是checkbox创建的单选框,为用户提供选择查询方式。“显示查询结果”是TestArea 类创建的文本区,负责显示查询到的记录。socket 是 Socket 套接字对象,

13、负责呼叫服务器并建立套接字连接。方法 浏览器内置的JVM 用DatabaseClien 创建applet 后,立刻通知这个applet 调用init()方法完成必要的初始化工作,其主要工作是从加载applet 的html 中获取表的名字以及字段的名字个数量。applet 调用init()方法后,调用start()方法,其主要操作是呼叫服务器建立套接字连接。applet 所在的Web 页面转到其他页面然后又返回,start()将再次被调用。当 applet 所在的页面转到其他页面时,applet 将调用stop()方法,其主要是中断和服务器的套接字连接。run()方法是DatabaseClien

14、t 类实现的Runnable 接口中的方法,负责读取从服务器查询到的记录。3.3 数据库设计 JDBC 操作不同的数据库仅仅是连接方式上的不同,我们使用Microsoft Access数据库管理系统创建一个名字为book.mdb 的数据库。(1)建立数据库 选择Windows2000/XP系统桌面上的开始所有程序Microsoft Access命令,启动数据库管理系统,然后选择新建数据库。将新建的数据库命名为book.mdb,并保存到程序所在的文件夹中。(2)创建表 创建好数据库后,就可以在该数据库下建立若干个表。在book.mdb 数据库中出创建名字为bookform的表。Bookform表

15、的字段(属性)为:ISBN(文本)name(文本)author(文本)publisher(文本)data(日期)price(数字)其中ISBN字段为主键。(3)设置数据源 选择“控制面板”-“管理工具”-“ODBC 数据源”命令。双击ODBC 数据源图标,将book.mdb 设置为名字是myDataSouce 的数据源。计算机08 级 JAVA 程序设计高级语言 课程设计报告 8 3.4 源代码分析 3.4.1 DatabaseServer 类 import .*;import java.util.*;import java.io.*;public class DatabaseServer S

16、erverSocket server;Socket you;InetAddress yourAddress;public DatabaseServer()try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundException e)System.out.println(e);System.out.println(我是服务器端程序,负责处理用户的连接请求);public void startServer(int port)while(true)try server=new ServerSocket(port);cat

17、ch(IOException e1)System.out.println(正在监听:);try System.out.println(等待用户呼叫.);you=server.accept();yourAddress=you.getInetAddress();System.out.println(客户的IP:+yourAddress);catch(IOException e)if(you!=null)new ServerThread(you).start();else continue;计算机08 级 JAVA 程序设计高级语言 课程设计报告 9 public static void main(

18、String args)DatabaseServer server=new DatabaseServer();server.startServer(8731);3.4.2 ServerThread 类 import java.io.*;import .*;import java.util.*;import java.sql.*;public class ServerThread extends Thread InetAddress yourAddress;Socket socket=null;DataOutputStream out=null;DataInputStream in=null;C

19、onnection con=null;Statement stmt=null;ResultSet rs;int number;ServerThread(Socket t)socket=t;try con=DriverManager.getConnection(jdbc:odbc:myDataSouce,);stmt=con.createStatement();catch(SQLException e)System.out.println(e);try in=new DataInputStream(socket.getInputStream();out=new DataOutputStream(

20、socket.getOutputStream();catch(IOException e)public void run()String s=;int N=0;计算机08 级 JAVA 程序设计高级语言 课程设计报告 10 while(true)try s=in.readUTF();System.out.println(s);if(s.startsWith(字段个数:)String number=s.substring(s.lastIndexOf(:)+1);N=Integer.parseInt(number);else String sqlCondition=null;String 表名=,

21、查询内容=,字段=,查询方式=;StringTokenizer fenxi=new StringTokenizer(s,:);if(fenxi.hasMoreTokens()表名=fenxi.nextToken();if(fenxi.hasMoreTokens()查询内容=fenxi.nextToken();if(fenxi.hasMoreTokens()字段=fenxi.nextToken();if(fenxi.hasMoreTokens()查询方式=fenxi.nextToken();if(查询方式.equals(完全一致)sqlCondition=SELECT*FROM+表名+WHERE

22、+字段+LIKE+查询内容+;else if(查询方式.equals(前方一致)sqlCondition=SELECT*FROM+表名+WHERE+字段+LIKE+查询内容+%;else if(查询方式.equals(后方一致)sqlCondition=SELECT*FROM+表名+WHERE+字段+LIKE+%+查询内容+;else if(查询方式.equals(中间包含)sqlCondition=SELECT*FROM+表名+WHERE+字段+LIKE+%+查询内容+%;try rs=stmt.executeQuery(sqlCondition);计算机08 级 JAVA 程序设计高级语言

23、 课程设计报告 11 number=0;while(rs.next()number+;StringBuffer buff=new StringBuffer();for(int k=1;k=N;k+)buff.append(rs.getString(k)+);out.writeUTF(n+new String(buff);if(number=0)out.writeUTF(n没有查询到任何记录n);catch(SQLException ee)out.writeUTF(+ee);catch(IOException e)try socket.close();con.close();catch(Exce

24、ption eee)System.out.println(客户离开了);break;3.4.3 DatabaseClient 类 import .*;import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class DatabaseClient extends JFrame implements Runnable,ActionListener String formName;/数据库中的表名 JTextField 输入查询内容;计算机08 级 JAVA 程序设计高级语言 课程

25、设计报告 12 Choice choice;Checkbox 完全一致,前方一致,后方一致,中间包含;CheckboxGroup group=null;JButton 查询;JTextArea 显示查询结果;Label 提示条;Socket socket=null;DataInputStream in=null;DataOutputStream out=null;Thread thread;int N=0;/字段个数 String ziduanName;/存放字段名字的数组 String ziduanExplain;/存放字段解释的数组 public DatabaseClient()threa

26、d=new Thread(this);输入查询内容=new JTextField(19);查询=new JButton(查询);提示条=new Label(正在连接到服务器,请稍等.,Label.CENTER);choice=new Choice();File f=new File(txt.txt);try FileReader fr=new FileReader(f);BufferedReader bf=new BufferedReader(fr);String str=bf.readLine();N=Integer.parseInt(str);formName=bf.readLine();

27、ziduanName=new StringN;ziduanExplain=new StringN;String s1=;for(int i=0;(s1=bf.readLine()!=null;i+)String s=s1;ziduanNamei=s.substring(0,s.indexOf(:).trim();ziduanExplaini=s.substring(s.indexOf(:)+1).trim();bf.close();fr.close();catch(Exception e)e.printStackTrace();for(int k=0;k0)try out.writeUTF(字

28、段个数:+N);out.writeUTF(formName+:+查询内容+:+字段+:+查询方式);catch(IOException e1)提示条.setText(与服务器已断开);else 输入查询内容.setText(请输入内容);public static void main(String arg)new DatabaseClient();4 系统运行及使用说明 本题中的运行环境我们采用的是Eclipse+SqlServer2000。这两款软件都在专业领域有较大的使用率,同时也是比较成熟的产品。Eclipse 是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、

29、具有商业品质的工业平台。本章新加入的内容为数据库的相关知识,着方面的知识并不难,在系统配置上,要求我们安装数据库,设置数据源。使用数据库查询,可以大大提高工作效率,方便用户使用。总 结 Java 程序设计是本专业的一门重要的面向对象的程序语言。在刚开始学习时,一直担心自己、也没把握自己能否学好,也曾担心过不了考试这一关。经过近大半学期老师您不厌其烦的教导,引导我们去学习。我对Java 语言有了一定 计算机08 级 JAVA 程序设计高级语言 课程设计报告 16 的了解,但那绝对是远远不够的,还是要不断地把它应用到实践中去,融会贯通。经过为期四个星期Java 课程设计,亲身感受体验敲、改写Jav

30、a 程序代码的乐趣,我对Java 编程有了较为深入的了解,不仅巩固了以前在课本上学到的知识,还学会了很多其他东西,比如Java 程序不同调试平台的使用、错误的调试及数据库路径的配置等等。一直以来,或许有不少人跟我一样,总是觉得编程是很枯燥乏味的,但是这次的体验下来,其实以前我们的想法错误的。感觉到看着敲击的代码变为一个个可以自娱自乐小游戏程序,其实是一件非常有趣的事情。并且在添加功能的过程中,不仅可以启发自己的想象力,还可以培养灵活运用知识的能力。在此过程中,我们认识到编程的重要步骤是分析,分析问题的本身和现实要求。分析过程中采用根据设置框架选择功能使我的思路特别清晰。拿到一个题目不能只局限在一种思想一种方法上,要尽量的多尝试其他的做法,然后比较,集各家之所长,拿出最优秀的程序来。其次也是最重要的就是我们应当打开我们的视野,我们应当从我们的生活的这个世界中去领悟解决问题的思想和方法 通过这次课程设计,我收获的不仅仅是课程上的知识得到实际应用,还有编程的基本习惯和开发系统时应注意的流程。作为一个程序编程人员,要保持清醒的头脑,以现实为依据,让自己的每一行代码都能实现自己的意义。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 文案大全

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁