




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java课程设计实验手册实验名称: JDBC程序设计实验目的:一、 巩固Java语言,复习Java图形化用户界面的开发过程和主要技术二、 学习数据库编程,了解Java数据库编程机制三、 能够利用JDBC开发实用的数据库应用程序实验要求:一、 通过本次课程设计,了解JDBC的机制,掌握数据库编程的主要操作二、 增强团队合作意识,以小组为单位合作完成图书管理系统实验环境:Java:j2sdk-1_4_0_03、JCreator、JDBC数据库:SQL Server 2000实验任务:课程设计题目一: 图书管理系统一、 系统要求:1 登录系统:注销用户、系统退出。2 管理:用户管理、图书管理、读者管理、借阅管理。3 查询:图书查询、读者查询、借阅查询。二、 各功能要求:1 登录模块功能:验证用户名和密码。可以选择用户类型,默认选中“读者”。还包括书籍管理员、借阅管理员。2 管理功能:对读者、图书、借阅进行管理。 用户管理功能: 增加、修改、删除用户(读者、书籍管理员、借阅管理员)信息。 图书管理功能:图书管理包括增加图书信息、删除图书信息和修改图书信息功能。 借阅管理功能:完成图书的借、还功能。3 查询功能:对图书、用户、借阅情况的查询子模块: 用户查询功能:管理员(借阅管理员)可以查找相应的读者,根据用户名或借阅号。 图书查询功能:根据书名、图书编号、作者、出版社等在数据库中查找对应的图书信息。(联合查询和单项查询)。 借阅查询功能: 根据读者名或借阅号查询该读者的借阅信息。课程设计题目二:在线考试系统一、 系统要求:1) 题库管理2) 自动出题,做题计时3) 对于客观题要求自动打分,对于主观题要求能够判断出是否抄袭。4) 考生管理、老师管理二、 各功能要求:1) 题库管理a) 老师登录之后可以维护自己课程的题库,包括:选择题、填空题、判断题、阅读程序写结果、问答题等。维护是指可增加、修改、删除和查询。b) 老师规定一套试题的题型、相应的出题量、分数安排以及答题时间。c) 老师对试题的对应答案要维护。2) 自动出题,做题计时a) 根据学生选择做题的课程名,从老师题库中寻找对应课程。b) 按照老师出题要求,自动生成一套试题。c) 做题计时,如果在规定时间内没有完成任务的,强行提交试卷。3) 对于客观题要求自动打分,对于主观题要求能够判断出是否抄袭。a) 试卷提交之后,对于客观题要可以自动给出分数。b) 主观题要可以在已有试卷中查抄袭。c) 老师可以在线批阅试卷(主观题)。d) 老师批阅完主观题后,给出试卷分数。4) 考生管理、老师管理a) 老师:维护试卷、在线阅卷,对自己的信息维护。b) 学生:维护自己信息、在线答题、查看成绩。实验所需知识:一、数据库1、基础知识1.1 数据库数据库(DataBase,DB)是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。它是一个按数据结构来存储和管理数据的计算机软件系统。现在比较流行的大型数据库产品有:Oracle,DB2,Sybase,Informix,SQL Server等。1.2 关系型数据库数据库中数据的组织方式决定了不同的数据模型,如:层次模型、网状模型、关系模型等。比较通用的是关系模型,现在计算机厂商新推出的数据库管理系统几乎都支持关系模型。 关系数据库系统采用关系模型作为数据的组织方式,在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。例如:表1学生表student学号姓名性别班级2007001李晓明男土木07012007002王莉女信计0701表2成绩表score学号课程编号课程名称成绩20070011949高等数学8520070011823C语言9820070021950数据结构60l 记录(元组):表中的一行即为一条记录。l 属性:表中的一列即为一个属性,给每一个属性起一个名称即属性名。l 主键(主码):表中的某个属性组,它可以唯一确定一条记录。l 关系模式:对关系的描述,一般表示成:关系名(属性1,属性2,属性n),例如:学生表(学号,姓名,性别,班级)1.3 T-SQL语言对数据库进行管理和操作的第四代语言,主要包括:l 数据定义语言(DDL,Data Definition Language)主要对数据库和表操作;l 数据操纵语言(DML,Data Manipularion Language)主要对记录进行操作。l 数据控制语言(DCL,Data Control Language)l 系统存储过程(System Stored Procedure)l 一些附加的语言元素 1.3.1 数据定义语言(1)创建表语法:CREATE TABLE ( 列完整性约束条件 , 列完整性约束条件 , 列完整性约束条件)列完整性约束条件的格式:Default默认值| Identity (seed,increment) NULL | NOT NULL PRIMARY KEY | UNIQUE 举例:例:Create Table student( id bigint Identity(2007001,1) PRIMARY KEY , name varchar(10) not null, sex char(2) not null, classname varchar(10) not null)例:Create Table score( id bigint not null Foreign Key References student(id), classid int not null, classname varchar(10) not null, score int, constraint XH_KCH Primary key (id,classid)(2) 修改表语法:ALTER TABLE ADD完整性约束 DROP(列名) MODIFY 举例: Alter Table student add academic varchar(20)说明:SQL Server的格式在修改方面有一点不同。alter table student alter column name varchar(20);(3)删除表语法:DROP TABLE 表名举例: Drop Table student1.3.2数据操纵语言 说明: 数据库中用单引号标记字符串;数据库不区分大小写;不用分号分割语句!(1) 增加记录语法:Insert into 表名 values(列值1,列值n)举例: Insert student values(李晓明,男,土木0701)或 Insert into student(name, sex, classname) values(李晓明,男,土木0701, 土木)(2) 删除记录语法:Delete FROM 表名 WHERE 条件举例:delete score where classid=1821(3) 修改记录语法:Updata 表名 SET 列名=表达式, WHERE 条件举例:update score set classid=1821 where classid=1823(4) 查询记录语法:SLECET 列1,列2,FROM 表名WHERE 条件GROUP BY 分组表达式HAVING 分组统计条件ORDER BY 排序表达式举例: 例1:查询所有学生的基本信息 select * from student 例2:查询所有学生的考试成绩,并显示其所在专业 select student.id, name, academic, score.classname, scorefrom student, scorewhere basicinfo.id=score.id 例3:查询成绩不及格的学生的所有信息 select student.id, name, sex, student.classname, score.classname, score from student, score where basicinfo.id=score.id and score运行 输入:regedit),在HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager中找到PendingFileRenameOperations项目,并删除它。这样就可以清除安装暂挂项目。 4)删除注册表中跟sql server相关的键(8)安装“SQL Server2008” 安装过程基本全是”next”,有比较特殊的地方见下面截屏:自己输入一个名字下拉选择一个默认的混合模式,一定要有密码!3、使用说明3.1服务管理器SQL Server 服务管理器是在服务器端实际工作时最有用的实用程序。服务管理器用来启动、暂停、继续和停止数据库服务器的实时服务。图1 服务管理器界面3.2 企业管理器企业管理器是SQL Server中最重要的一个管理工具。企业管理器不仅能够配置系统环境和管理SQL Server,而且由于它能够以层叠列表的形式来显示所有的SQL Server对象,因而所有SQL Server对象的建立与管理都可以通过它来完成。 利用企业管理器主要可以完成:建立与管理数据库;建立与管理表、视图、存储过程、触发程序、角色、规则、默认值等数据库对象,以及用户定义的数据类型;备份数据库和事务日志、恢复数据库;复制数据库等。图2 企业管理器界面说明:如果是SQL Server2008,企业管理器和查询分析器合成一个环境,执行“程序Microsoft SQL Server 2008 SQL Server Management Studio”,会出现以下集成环境:操作基本同SQL Server 2000。3.2.1 创建数据库(1)基础知识一台服务器上最多可以指定 32,767 个数据库。有3种类型的文件用来存储数据库: l 主文件(.mdf)包含数据库的启动信息。主文件还可以用来存储数据。每个数据库都包含一个主文件。l 次要文件(.ndf):保存所有主要数据文件中容纳不下的数据。一个数据库可以没有次要文件,也可以有多个。l 事务日志文件(.ldf):保存用来恢复数据库的日志信息。每个数据库必须至少有一个事务日志文件。事务日志文件最小为 512 KB。 注意:每个数据库至少有两个文件,一个主文件和一个事务日志文件。(2)创建过程右键“数据库”-在“数据库属性”窗口中,分别选择“常规”和“事务日志”选项卡。选择文件的保存地址。图3 创建数据库(3)还原数据库 如果想将一台机器上的某个数据库拷贝到另外一台机器上,我们可以只拷贝主文件、次要文件、事务日志文件到相应的机器上,然后选择“数据库”,再选择“工具”-“还原数据库”,填写相应信息即可。3.2.2 创建表 选择相应的数据库,然后在右键单击“表”,选择“新建表”。图4 创建表3.2.3 修改表选择相应的数据库中的表,然后在右键单击,选择“设计表”。图5 修改表3.2.4 记录操作选择相应的数据库中的表,然后在右键单击,选择“打开表”-“返回所有行”。图6 记录操作3.3查询分析器SQL Server 2000新的图形化查询分析器用于输入和执行Transaction-SQL语句,并且迅速查看这些语句的结果,以分析和处理数据库中的数据。这是一个非常实用的工具,对掌握SQL语言,深入理解SQL Server的管理工作有很大帮助。图7 查询分析器界面4、练习(1)用T-SQL语句或企业管理器创建符合如下要求的两个表:表3 departments字段名数据类型说明depidtinyint部门编号(主键)depnamechar(12)部门名称depnotevarchar(100)有关说明表4 employees字段名数据类型说明empidchar(6)员工编号(主键)empnamechar(20)员工姓名(非空)birthdatesmalldatetime出生日期departtinyint所在部门(外键)(非空)salaryfloat月薪positionchar(8)职务(2)用T-SQL语句向departments、employees添加若干条记录:表5 departments数据depiddepnamedepnote1软件开发部2系统集成部表6 employees数据empidempnamebirthdatedepartsalarypositionA00001王晓丽1970-4-2722400.00A00003刘晴1972-9-1212200.00A00004马明1962/3/1414600.00副经理A00007赵书生1968/12/1522700.00(3)进行以下查询:l 查询所有1970年以后出生的员工的信息。l 查询工资高于2000的员工的信息。l 查询系统集成部的所有员工的信息。l 统计软件开发部的人数。l 查询所有员工中工资最高和最低的人。(4)进行以下修改:l 将所有员工的工资上调10%。l 将工资收入低于2500的员工每人加薪200元。l 对所有“岗位”一栏为空的记录,将其“岗位”改为“职员”。(5)删除年龄大于50岁的员工的信息。二、Java(1)安装JDK。(2)设置环境变量:l path中添加“/bin” 如:c:jdk1.4.2binl 新建classpath并添加“/lib” 如:.;c:jdk1.4.2lib(3)测试(4)安装JCreator。 (5)配置JCreator 为了使JCreator可以执行访问数据库的应用程序,需要对JCreator进行配置。其步骤:l “配置”- “选项”l “JDK配置文件”-“JDK” -“编辑”。如下图所示:l 添加JDBC下的三个.jar文件,步骤如下:选择“添加存档”,选择安装JDBC路径下的lib文件夹中的三个.jar文件:msbase.jar、mssqlserver.jar、msutil.jar。然后选择“确定”即可。三、JDBC1、基础知识JDBC(Java Data Base Connectivity, java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序。图8 JDBC工作原理JDBC主要做三件事:与数据库建立连接、发送操作数据库的语句并处理结果。2、JDBC安装针对不同的数据库,我们需要到相应的网站上下载对应的JDBC。不过很多大型数据库现在都自带JDBC,在首次安装的时候就已经安装JDBC,无须独立安装JDBC,如:DB2、Oracle等。(1)SQL Server 2000 安装SQL Server2000需要专门安装JDBC,安装过程非常简单,基本一路“next”就可以。 配置安装成功后,会出现“C:Program FilesMicrosoft SQL Server 2000 Driver for JDBC”。相应的配置我们可以参考“C:Program FilesMicrosoft SQL Server 2000 Driver for JDBCbooksMsjdbcref”下的msjdbcref.pdf说明书。我简单说明windows下的配置,设置环境变量:CLASSPATH=.; C:Program FilesMicrosoft SQL Server 2000 Driver for JDBClib msbase.jar;C:Program FilesMicrosoft SQL Server 2000 Driver for JDBClibmssqlserver.jar;C:Program FilesMicrosoft SQL Server 2000 Driver for JDBClibmsutil.jar即将“C:Program FilesMicrosoft SQL Server 2000 Driver for JDBClib”下的三个jar文件添加进去。 测试用资料包中的testdb,测试JDBC安装是否成功。(2)SQL Server 2008 安装解压,放置到指定文件夹。并且将“sqljdbc_2.0chs”下的sqljdbc.jar删除。 配置简单说明windows下的配置,设置环境变量:classpath中添加“sqljdbc_2.0chssqljdbc4.jar”。如:“C:jdk1.6.0_10lib;C:Program FilesMicrosoft SQL Server JDBC Driver 2.0sqljdbc_2.0chssqljdbc4.jar” 修改端口,启动TCP/IP执行“程序Microsoft SQL Server 2008 配置工具SQL Server 配置管理器”。(I)启动TCP/IP启用前:启用后:(II)修改端口号服务器端口号修改成1433客户端端口号(III)重启服务 测试用资料包中的testdb,测试JDBC安装是否成功。3、JDBC访问数据库的基本步骤(1)装载驱动程序Java程序为了与DBMS(数据库管理系统)建立连接,首先要装载驱动程序。不同的驱动程序的装载方法不同,一般都可以在厂家自带的文档中找到。一般的格式为:Class.forName(“jdbc.driver_class_name”);装载MS SQL Server驱动为:SQL Server2000:Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);SQL Server2008:Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);注意:因为用到的类都包括在java.sql包中,所以在源文件开头要求加上:import java.sql.*;(2)与数据库建立连接DriverManager类是JDBC的管理层,负责用户与驱动程序之间的交互。当我们装载了驱动程序之后,可以使用DriverManager类的getConnetion()方法获取一个与数据库的连接,但是为了明确表明要连接的数据库,必须将要连接的数据库URL作为参数。一般的格式: Connection con=DriverManager.getConnetion(url,login,password);例如:SQL Server2000:Connection con= DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=studentdb,sa,123456); SQL Server2008:Connection con= DriverManager.getConnection(jdbc:sqlserver:/localhost:1433;DatabaseName=studentdb,sa,123456); (3) 创建JDBC Statement 对象Statement类提供在连接的基础上运行SQL语句,并访问结果。Connection接口提供了生成Statement对象的方法,如:Statement stmt=con.createStatement();(4) 执行SQL语句,获得结果Statement提供了许多的方法,我们常用的有:l execute(String sql,int autoGeneratedKeys/int columnIndexes/String columnNames):执行给定的 SQL 语句,该语句可能返回多个结果。l executeQuery(String sql):执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。l executeUpdate(String sql):执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句。例如:ResultSet rs=stmt.executeQuery(select * from student);ResultSet结果集包含了SQL语句的执行结果,ResultSet提供了许多访问记录的方法:l next():把当前指针向下移动一行。注意最初它位于第一行之前!l close():关闭数据集。l getString(String columnname)或getString(intcolumnIndex):获得数据库里varchar、char等数据l getFloat(String columnname)或getFloat(intcolumnIndex):获得数据库里float等数据l getInt(String columnname)或getInt(intcolumnIndex):获得数据库里integer等数据例如:while(rs.next() System.out.println(rs.getInt(id); System.out.println(rs.getString(2); (5)举例l 查询 /装载驱动程序 Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); /创建连接 Connection con=DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=studentdb,sa,123456); /执行SQL语句Statement stmt=con.createStatement();String name=”王莉”; String sql=select * from student where name=+name+; ResultSet rs=stmt.executeQuery(sql); /访问记录集 while(rs.next() System.out.println(rs.getInt(id); System.out.println(rs.getString(name); System.out.println(rs.getString(sex); System.out.println(rs.getString(classname); /关闭所有连接 rs.close(); stmt.close(); con.close();l 修改记录/装载驱动程序 Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); /创建连接 Connection con=DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=studentdb,sa,123456); /执行SQL语句 Statement stmt=con.createStatement(); String sql=update student set name=王丽 where id=2007002; int col=stmt.executeUpdate(sql); System.out.println(影响行数为:+col);/关闭所有连接 stmt.close(); con.close();l 增加记录/装载驱动程序 Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); /创建连接 Connection con=DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=studentdb,sa,123456); /执行SQL语句 Statement stmt=con.createStatement(); String sql=insert into student values(张强,男,应数0701); stmt.execute(sql);/关闭所有连接 stmt.close(); con.close();l 删除记录/装载驱动程序 Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); /创建连接 Connection con=DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=studentdb,sa,123456); /执行SQL语句 Statement stmt=con.createStatement(); String sql=delete student where id=2007002; int col=stmt.execute(sql); System.out.println(影响行数为:+col);/关闭所有连接 stmt.close(); con.close();4、JTable简介为了很好的显示数据,我们要用到一些图形用户组件来显示数据。JTable组件是Swing组件中比较复杂的组件,它能以二维表的形式显示数据。 (1) 构造函数很多形式,比较常用的有:l 调用无参构造函数:JTabletable=newJTable();l 以表头和表数据创建表格:ObjectcellData=2007001,李晓明,男,土木0701,2007002,王 莉,女,信计0701; StringcolumnNames=id,name,sex,classname; JTabletable=newJTable(cellData,columnNames);l 以表头和表数据创建表格,并且让表单元格不可改:ObjectcellData=2007001,李晓明,男,土木0701,2007002,王 莉,女,信计0701; StringcolumnNames=id,name,sex,classname; DefaultTableModelmodel=newDefaultTableModel(cellData,headers);table=newJTable(model);说明: DefaultTableModel是javax.swing.table.*包中的一个类,可以辅助JTable完成许多工作,比如:修改记录、删除记录、增添记录等。例如:从数据库studentdb中读出student的所有记录:Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); Connection con=DriverManager.getConnection (jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=studentdb,sa,123456); Statement stmt=con.createStatement(); /获得行数 ResultSet rs=stmt.executeQuery(select count(*) from student); rs.next(); int RowNum=rs.getInt(1);/获得列数rs=stmt.executeQuery(select * from student); ResultSetMetaData rsmd=rs.getMetaData(); int ColNum=rsmd.getColumnCount(); /构造JTable String names=new StringColNum; for (i=1;i=ColNum;i+) namesi-1=rsmd.getColumnName(i); Object info=new ObjectRowNum; i=0; while (rs.next() infoi=new ObjectColNum; for (j=1;j=ColNum;j+) infoij-1=rs.getObject(j); i+; DefaultTableModel model = new DefaultTableModel(info,names); table=new JTable(model); table.setPreferredScrollableViewportSize(new Dimension(400,50); f.getContentPane().add(new JScrollPane(table);(2)删除所有行:DefaultTableModel tableModel= (DefaultTableModel)table.getModel(); tableModel.setRowCount(0);/ 清除原有行(3)获取用户所选择行的行号:int index=table.getSelectedRow();(4)获取用户所选择行的属性值: table.getValueAt(int i,int index); 其中:返回值是用户所选行所选列的内容,参数i是行号,index是列号。(5)添加行:String arr=new String4; arr0=rs.getString(id); arr1=rs.getString(name); arr2=rs.getString(sex); arr3=rs.getString(classname); tableModel.addRow(arr);(6)刷新JTable: table.invalidate();5、实例(1)查询import java.sql.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.table.*;public class selectSwing implements ActionListener JFrame f=new JFrame(DB Test); String names; int i,j,RowNum,ColNum; Object info; JTable table; TextField edit=new TextField(10); Label label=new Label(输入学生姓名:); JButton b=new JButton(查询); public static void main(String args) new selectSwing();/响应按钮的事件,完成查询功能public void actionPerformed(ActionEvent e) try /装载驱动程序 Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); /创建连接 Connection con=DriverMa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025自动化设备采购合同模板
- 2025年贾生中考试题及答案
- 文艺巡回演出合同样书
- 2025年电商供应链金融服务创新与风险管理的风险防范与控制体系研究001
- 2025年纺织服装制造业智能化生产质量控制报告
- 2025标准版房屋租赁合同
- 2025年文化与娱乐:数字博物馆建设与数字文化产业发展趋势分析
- 美容胸部知识培训课件
- 新中药化学考试题及答案
- 防诈骗题库及答案
- 2025年游泳馆设施维护承包合同
- 《数据采集与处理》课件
- 玛丽艳美容培训
- 国际商务谈判备忘录范本
- 2025年四川华丰科技股份有限公司招聘笔试参考题库含答案解析
- 《药品销售服务培训》课件
- 采购降本知识培训课件
- 软件开发与系统集成作业指导书
- 创意写作与文学欣赏
- 初级锅炉操作工职业技能鉴定考试题库及答案
- 跨境电子支付的风险管理与防范策略
评论
0/150
提交评论