实验 JDBC基础(综合)
jdbc编程实验报告

jdbc编程实验报告JDBC编程实验报告一、实验目的本次实验的目的是通过JDBC编程实现Java程序与数据库的交互,掌握JDBC编程的基本方法和技巧。
二、实验环境本次实验使用的开发环境为Eclipse,数据库为MySQL。
三、实验步骤1. 导入JDBC驱动在Eclipse中创建Java项目后,需要将MySQL的JDBC驱动导入到项目中。
具体步骤为:右键项目 -> Build Path -> Configure Build Path -> Libraries -> Add External JARs -> 选择MySQL的JDBC 驱动文件。
2. 连接数据库在Java程序中使用JDBC连接数据库需要使用以下代码:```javaClass.forName("com.mysql.jdbc.Driver");Connection conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/test ", "root", "123456");```其中,`com.mysql.jdbc.Driver`为MySQL的JDBC驱动类名,`jdbc:mysql://localhost:3306/test`为数据库连接地址,`root`为数据库用户名,`123456`为数据库密码。
3. 执行SQL语句在Java程序中使用JDBC执行SQL语句需要使用以下代码:```javaStatement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SELECT * FROM user"); while (rs.next()) {System.out.println(rs.getString("name"));}```其中,`conn.createStatement()`用于创建Statement对象,`stmt.executeQuery("SELECT * FROM user")`用于执行SQL查询语句,`rs.next()`用于遍历查询结果集,`rs.getString("name")`用于获取查询结果中名为name的字段的值。
网络工程网络编程实验报告5-JDBC连接

《网络编程》实验报告实验序号:05 实验项目名称:JDBC连接学号姓名专业、班20网络工程实验地点指导教师实验时间2022一、实验目的及要求1、利用JDBC实现对Acess数据库文件的操作2、利用JDBC实现对MySQL数据库文件的操作二、实验设备(环境)及要求一台Windows XP、JDK1.6、MyEclipse 8.5三、实验内容与步骤1、建立ODBC数据源:建立T_STUDENT表;2、添加数据、删除数据:PreparedStatement,CallableStatement四、实验结果与数据处理Access数据库使用连接池访问数据库1.添加数据:结果:2.删除数据:结果:MySQL数据库1、添加数据:<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%><html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn = DriverManager.getConnection("jdbc:odbc:DSSchool");Statement stat = conn.createStatement();String sql = "INSERT INTO T_STUDENT(STUNO,STUNAME,STUSEX)VALUES('0032','fengjiang','man')";int i = stat.executeUpdate(sql);out.println("成功添加" + i + "行");stat.close();conn.close();%></body></html>2、删除数据:<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%><html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn = DriverManager.getConnection("jdbc:odbc:DSSchool");Statement stat = conn.createStatement();String sql = "DELETE FROM T_STUDENT WHERE STUNO='0032'";int i = stat.executeUpdate(sql);out.println("成功删除" + i + "行");stat.close();conn.close();%></body></html>结果:3、修改数据:<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%><html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn = DriverManager.getConnection("jdbc:odbc:DSSchool");Statement stat = conn.createStatement();String sql = "UPDATE T_STUDENT SET STUSEX='女' WHERE STUNO='0007'";int i = stat.executeUpdate(sql);out.println("成功修改" + i + "行");stat.close();conn.close();%></body></html>结果:4、查询数据:<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%><html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn = DriverManager.getConnection("jdbc:odbc:DSSchool");Statement stat = conn.createStatement();String sql = "SELECT STUNO,STUNAME FROM T_STUDENT WHERE STUSEX='女'";ResultSet rs = stat.executeQuery(sql);while(rs.next()){String stuno = rs.getString("STUNO");String stuname = rs.getString("STUNAME");out.println(stuno + " " + stuname + "<BR>");}stat.close();conn.close();%></body></html>结果:附源程序清单:添加数据:<%@ page language="java"import="java.sql.*"pageEncoding="utf-8"%> <html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn =DriverManager.getConnection("jdbc:odbc:DSSchool");Statement stat = conn.createStatement();String sql = "INSERT INTO T_STUDENT(STUNO,STUNAME,STUSEX) VALUES('0032','fengjiang','man')";int i = stat.executeUpdate(sql);out.println("成功添加" + i + "行");stat.close();conn.close();%></body></html>删除数据:<%@ page language="java"import="java.sql.*"pageEncoding="utf-8"%> <html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn =DriverManager.getConnection("jdbc:odbc:DSSchool");Statement stat = conn.createStatement();String sql = "DELETE FROM T_STUDENT WHERE STUNO='0032'";int i = stat.executeUpdate(sql);out.println("成功删除" + i + "行");conn.close();%></body></html>修改数据:<%@ page language="java"import="java.sql.*"pageEncoding="utf-8"%> <html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn =DriverManager.getConnection("jdbc:odbc:DSSchool");Statement stat = conn.createStatement();String sql = "UPDATE T_STUDENT SET STUSEX='女' WHERE STUNO='0007'";int i = stat.executeUpdate(sql);out.println("成功修改" + i + "行");stat.close();conn.close();%></body></html>查询数据<%@ page language="java"import="java.sql.*"pageEncoding="utf-8"%> <html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn =DriverManager.getConnection("jdbc:odbc:DSSchool");Statement stat = conn.createStatement();String sql = "SELECT STUNO,STUNAME FROM T_STUDENT WHERE STUSEX='女'";ResultSet rs = stat.executeQuery(sql);while(rs.next()){String stuno = rs.getString("STUNO");String stuname = rs.getString("STUNAME");out.println(stuno + " " + stuname + "<BR>");}conn.close(); %></body></html>。
《Java》实验指导13-JDBC数据库编程(Access版)

实验项目十三JDBC数据库编程一、实验目的及要求1、掌握创建ODBC数据源2、掌握创建一个Student表3、运用Type1(JDBC-ODBC桥)连接、访问数据库4、实现数据库的增删改查操作二、实验内容和要求1、在D盘建立sql文件夹,进入该文件夹建立名为stu.mdb的数据库,打开,设计表结构如下(参照P178表10-6),存盘,定表名为Students:打开表,可以添加2条记录如下:2、创建ODBC数据源开始-设置-控制面板-管理工具-数据源,选择“系统DSN”-“添加”,选第2项“Driver do Microsoft Access(*.Mdb)”(如下图):配置系统DNS(数据源):StudentSystem按照以下图例进行设置:数据源名,填StudentSystem,按“选择”,选d:\sql目录下的stu.mdb:再按“高级”按钮,登录名填sa,密码填sql,按“确定”。
记住数据源的名字System,表的名字Students,登录名sa,密码sql,编程会用到。
注意配置环境变量,Dos下加上 set path=C:\Program Files\Java\jdk1.6.0_20\bin3、运用Type1(JDBC-ODBC桥)连接、访问数据库//P179,操作1 创建一个类Student,与上面的表Student是对接:class Student{String No; //学号String Name; //姓名int Age; //年龄String Sex; //性别String Address; //住址String Email; //电子邮件String Phone; //联系电话//创建学生对象,封装数据//编写Student构造函数如下public Student(String No,String Name,int Age,String Sex,String Address,String Email,String Phone){this.No=No;=Name;this.Age=Age;this.Sex=Sex;this.Address=Address;this.Email=Email;this.Phone=Phone;}}编译情况如下:●运行结果●算法分析//P179,操作2 连接数据库:import java.sql.*; //导入包public class StudentSystem{Connection conn; //数据库连接对象Statement stm; //执行简单的SQL语句PreparedStatement pstm;//执行带有参数的SQL语句ResultSet rs; //保存查询结果StudentSystem()throws Exception{//加载驱动程序Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//连接数据库conn=DriverManager.getConnection("jdbc:odbc:StudentSystem","sa","sql"); }//操作3 :显示数据表的内容://查询并显示所有学生信息void selectAll()throws SQLException{stm=conn.createStatement();//创建Statement对象rs=stm.executeQuery("select * from Students");//执行SQL语句//判断是否有查询结果并显示while(rs.next()){printAll();System.out.println("------------------------------");}closeAll();//关闭Statement对象和ResultSet结果集//操作4 增:插入一条记录到数据表中://插入学生信息void insertStudent(Student s)throws SQLException{//创建带有参数的preparedStatement对象pstm=conn.prepareStatement("insert into Students values(?,?,?,?,?,?,?)"); //为参数赋值setValue(s);//执行SQL语句pstm.executeUpdate();//关闭preparedStatement对象pstm.close();}//操作5 删:删除满足条件的记录://删除指定学号的学生void deleteNo(String No)throws SQLException{pstm=conn.prepareStatement("delete from Students where StudentNo=?"); pstm.setString(1,No);pstm.executeUpdate();}//操作6 改:修改数据表的内容://修改指定学号的学生信息/* void updateStudent(Student s)throws SQLException{pstm=conn.prepareStatement("update Students setStudentNo=?,Name=?,Age=?,Sex=?,Address=?,Email=?,Phone=? where StudentNo=?"); setValue(s);pstm.setString(8,s.No);pstm.executeUpdate();pstm.close();}*///操作7 查:查找满足条件的记录://按照指定的学号查找特定学生信息void selectNo(String No)throws SQLException{stm=conn.createStatement();rs=stm.executeQuery("select * from Students where StudentNo='"+No+"'"); if(rs.next()){printAll();}closeAll();//操作8 综合处理://用来显示数据库中的数据private void printAll()throws SQLException{System.out.println("学号:"+rs.getString(1));System.out.println("姓名:"+rs.getString(2));System.out.println("年龄:"+rs.getInt(3));System.out.println("性别:"+rs.getString(4));System.out.println("地址:"+rs.getString(5));System.out.println("Email:"+rs.getString(6));System.out.println("电话:"+rs.getString(7));}//用来为参数设定值private void setValue(Student s)throws SQLException{pstm.setString(1,s.No); //pstm.setString("StudentNo",s.No);pstm.setString(2,); //pstm.setString("Name",);pstm.setInt(3,s.Age); //pstm.setInt("Age",s.Age);pstm.setString(4,s.Sex); //pstm.setString("Sex",s.Sex);pstm.setString(5,s.Address);//pstm.setString("Address",s.Address); pstm.setString(6,s.Email); //pstm.setString("Email",s.Email);pstm.setString(7,s.Phone); //pstm.setString("Phone",s.Phone);}//关闭结果集和Statement对象private void closeAll()throws SQLException{rs.close();stm.close();}//关闭连接void closeConn()throws SQLException{conn.close();}}将上述代码存入d:\j文件夹,名为StudentSystem.java,编译情况如下:●运行结果●算法分析4、实现数据库的增删改查操作//p181,主控程序class MainStudent{public static void main(String args[])throws Exception{//创建数据库操作类实例StudentSystem ss=new StudentSystem();//创建学生对象Student s1=new Student("20053051103","李三",22,"男","河北","168755955@","12345908945");Student s2=new Student("20053051105","王五",21,"男","湖北","wangwu@","12345908846");Student s3=new Student("20053051106","刘萍",22,"女","江西","zsan@","12345908965");Student s4=new Student("20053051107","黄志彬",21,"男","湖北","huang@","12345778849");//将学生信息写入数据库ss.insertStudent(s1);ss.insertStudent(s2);ss.insertStudent(s3);ss.insertStudent(s4);//查找指定学号学生//ss.selectNo("20053051101");//修改学生信息//ss.updateStudent(s);//删除指定学号学生信息//ss.deleteNo("20053051102");//显示所有学生信息ss.selectAll();//关闭数据库连接ss.closeConn();}}增加4条记录并显示:查找学号为"20053051106" 的学生:class MainStudent{public static void main(String args[])throws Exception{ //创建数据库操作类实例StudentSystem ss=new StudentSystem();//创建学生对象//查找指定学号学生ss.selectNo("20053051106");ss.closeConn();}}删除学号为"20053051106" 的学生:class MainStudent{public static void main(String args[])throws Exception{ //创建数据库操作类实例StudentSystem ss=new StudentSystem();//创建学生对象//删除指定学号学生信息ss.deleteNo("20053051106");//显示所有学生信息ss.selectAll();//关闭数据库连接ss.closeConn();}}观察,学号为"20053051106" 的学生即“刘萍”被删除了。
jdbc实训报告总结

jdbc实训报告总结实训报告:JDBC(Java Database Connectivity)一、实训目标本次JDBC实训的目标是掌握Java语言如何通过JDBC API与关系型数据库进行交互,包括数据库的连接、查询、更新和断开连接等操作。
二、实训内容1. 了解JDBC的基本概念和用途。
2. 掌握JDBC驱动的安装与配置。
3. 掌握使用JDBC API进行数据库连接、查询、更新和断开连接的步骤。
4. 了解事务处理和批处理的概念及实现方法。
5. 掌握使用PreparedStatement和CallableStatement执行参数化查询和存储过程。
6. 了解JDBC的异常处理机制。
7. 掌握使用连接池管理数据库连接。
三、实训过程1. 在实验环境中安装和配置JDBC驱动。
2. 编写Java程序,实现数据库的连接、查询、更新和断开连接等操作。
3. 编写Java程序,实现事务处理和批处理。
4. 编写Java程序,使用PreparedStatement和CallableStatement执行参数化查询和存储过程。
5. 编写Java程序,实现异常处理。
6. 编写Java程序,使用连接池管理数据库连接。
四、实训总结通过本次实训,我深入了解了JDBC API的使用方法,掌握了Java语言与关系型数据库的交互方式。
在实训过程中,我学会了如何安装和配置JDBC驱动,如何使用JDBC API进行数据库连接、查询、更新和断开连接等操作,以及如何使用PreparedStatement和CallableStatement执行参数化查询和存储过程。
此外,我还了解了事务处理和批处理的概念及实现方法,以及JDBC的异常处理机制和连接池的使用方法。
这些知识和技能将对我今后的学习和工作产生积极的影响。
javaEE实验报告1---JDBC操作数据库

if(rs!=null){
rs.close();
}
if(ps!=null){
try{
ps.close();
}catch(SQLException e) {
//TODOAuto-generated catch block
e.printStackTrace();
}
}
if(ct!=null){
ps=ct.prepareStatement("insert into TUserLogin values(?,?,?,?,?)");
ps.setString(1,"12");
ps.setString(2,"mary");
ps.setString(3,"123456");
ps.setString(4,"3");
年级:12
实验日期:2014-3-19
姓名:陈小斌
学号:03
班级:2班
实验名称:JDBC操作数据库
实验序号:实验一
成员人数:1
一、实验目的及要求
实验目的:
1、学习JDBC操作数据库的编程方法;
2、了解MyEclipse导入数据库驱动包的方法;
3、掌握Microsoft SQL Server 2008数据库的建立方法;
insert into TUserLogin values(3,'wl3','123456',1,'wl3@')
insert into TUserLogin values(4,'wl4','123456',1,'wl4@')
第五章JDBC数据库编程基础知识

第五章JDBC数据库编程基础知识数据库开发在当前的Web开发与应用中占有着十分重要的地位,信息科技进步的日新月异,实际应用基本都是对数据的保存,加工和处理,所以应用软件的开发离不开数据库知识。
鉴于数据库操作的重要性,本章就此技术进行详细的介绍,以方便大家学习使用。
Java提供的JDBC(Java Database Connectivity)使得我们在数据库编程中如鱼得水,实现操作平台独立以及供应商独立的目标。
本章中,我们会首先搭建起JSP开发数据库环境,然后对SQL数据库操作语言进行简单介绍,再通过具体的示例,让读者整体了解和掌握此项技术。
5.1 JDBCJDBC是Java数据库编程的总称,是JDK重要组成部分,指java.sql包中提供的所有支持数据库编程的API类。
JDBC同时提供对第三方数据库提供商在编写驱动软件时遵循的协议和规范。
JDBC通过drivers与数据库通讯和交流,驱动软件翻译Java程序中对数据库访问的代码,使之成为数据库语言,同时,当数据库将数据或信息传给Java程序,驱动软件又将其翻译为Java语言的代码和数据。
当前主流的数据库提供商有很多,如IBM的DB2,微软的SQL Server,MySQL,甲骨文的Oracle等。
当要添加数据到数据库时,不同数据库中添加操作使用的程序可能都不尽相同,是否就意味着必须针对不同的数据库编写相应的程序呢?实际上,根本无需如此麻烦,Java提供的驱动软件称为JDBC/ODBC(Open Database Connectivity,开放数据库连接协议)桥,通过这个ODBC作为我们存取数据库的接口,可以轻易的存取不同数据库。
ODBC最初是MS公司提供的数据库编程协议模式,现成为JDK中java.sql包的数据库驱动软件。
JDBC包含了“应用程序”(Application)、“驱动管理器”(Driver Manager)、“驱动程序”(Driver)、“数据来源”(Data Sources)4个要素,关系如下图5-1所示。
JSP+JDBC综合实训完整版实验报告
<head>
<metahttp-equiv="Content-Type"conteTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
<tablealign="center"border-color="gray"border="1">
<caption>注册</caption>
<tr>
<td><fontcolor="#6495ed">用户名:</font></td>
<td><inputname="username"type="text"value=<%=rs.getString(1)%>></td>
</tr>
<tr>
<td><fontcolor="#6495ed">密码:</font></td>
<td><inputname="PWD1"type="password"value=<%=rs.getString(2)%>></td>
</tr>
jdbc实验心得
JDBC实验心得1. 介绍JDBC(Java Database Connectivity)是Java语言访问数据库的标准API。
通过JDBC,可以实现Java程序与各种关系型数据库的连接与交互。
在本次实验中,我深入学习了JDBC的使用方法,并通过实际操作,对JDBC在开发中的重要性有了更深刻的认识。
本文将从以下几个方面详细探讨我在实验中的心得体会:•JDBC的基本概念及原理•JDBC连接数据库的步骤•实际操作中遇到的问题及解决方法•JDBC在开发中的应用场景•实验的收获和不足之处2. JDBC的基本概念及原理2.1 JDBC的作用和优势JDBC是Java语言连接数据库的标准接口。
它使得Java程序能够通过标准的数据库操作语句与数据库进行交互,实现数据的存储和查询等功能。
JDBC的优势在于它能够提供跨平台的数据库访问能力,而不依赖于特定的数据库或操作系统。
2.2 JDBC的工作原理JDBC的工作原理可以分为以下几个步骤:1.加载数据库驱动程序:在使用JDBC之前,需要先加载相应数据库的驱动程序。
通过Class.forName()方法加载驱动类,这个类实现了Java SQL接口规范。
2.建立数据库连接:通过DriverManager类的getConnection()方法,传入数据库URL、用户名和密码等参数,来建立与数据库的连接。
连接成功后,将返回一个Connection对象。
3.创建执行SQL语句的Statement对象:通过Connection对象的createStatement()方法,可以创建一个用于执行SQL语句的Statement对象。
4.执行SQL语句:使用Statement对象的executeQuery()或executeUpdate()方法,可以执行查询或更新操作。
5.处理查询结果或更新结果:当执行查询语句后,可以使用ResultSet对象来遍历查询结果集;当执行更新语句后,可以使用int值表示受影响的行数。
Java 综合实验及练习(参考答案)
Java实验综合实验及练习第一部分:编程题1、编写程序实现输入整数n,输出如下所示由数字组成的菱形。
(图中n=5)11 2 11 2 3 2 11 2 3 4 3 2 11 2 3 4 5 4 3 2 11 2 3 4 3 2 11 2 3 2 11 2 112.给出年、月、日,计算该日是该年的第几天?3、利用求素数的方法,就6~2000000之间的所有偶数验证歌德巴赫猜想:任何一个大于6的偶数可以分解为两个素数之和。
4、现有15位选手参加比赛,有6个评委每个评委都要给每位选手打分,分数为60~100分,现需要定义二维数组存储选手成绩,每行存储一位选手打分情况,要求输出选手得分以及选手最后得分,以及选手名次。
评分规则:分数为60~100分。
选手最后得分为:去掉一个最高分和一个最低分后其余4个分数的平均值。
5、设计一个描述二维平面上点的类Position,该类需要描述点的横坐标和纵坐标,并提供属性的set/get访问器方法和计算两点间距离的方法。
写一个程序测试这个类6、设计一个表示二维平面上点的类Point,包含有表示坐标位置的protected类型的成员变量x和y,获取和设置x 和y值的public方法。
设计一个表示二维平面上圆的类Circle,它继承自类Point,还包含有表示圆半径的protected类型的成员变量r、获取和设置r值的public方法、计算圆面积的public方法。
7、编写一个完整的Java Application 程序。
包含接口Shape,MyRectangle类,MyTriangle 类及Test类,具体要求如下:⑴、接口Shape:double area():求一个形状的面积double perimeter ():求一个形状的周长⑵、类 MyRectangle :实现Shape 接口,并有以下属性和方法:① 属性width : double 类型,表示矩形的长height : double 类型,表示矩形的高② 方法MyRectangle(double w, double h):构造函数ToString()方法 :输出矩形的描述信息,如“width=1.0,height=2.0, perimeter=6.0,area=2.0”⑶、类MyTriangle :实现Shape 接口,并有以下属性和方法:① 属性x,y,z: double 型,表示三角形的三条边s: 周长的1/2(注:求三角形面积公式为))()((z s y s x s s ---,s=(x+y+z)/2 ,开方可用Math.sqrt(double)方法)② 方法MyTriangle(double x, double y, double z):构造函数,给三条边和s 赋初值。
java实验报告GUI与JDBC
java实验报告GUI与JDBCJava 实验报告:GUI 与 JDBC一、实验目的1、深入理解和掌握Java 图形用户界面(GUI)的设计和实现方法,能够使用常用的 GUI 组件创建具有交互功能的界面。
2、熟悉和掌握 Java 数据库连接(JDBC)技术,能够实现与数据库的连接、数据查询、插入、更新和删除等操作。
3、通过将 GUI 与 JDBC 结合,开发具有实际应用价值的数据库管理系统,提高综合运用 Java 知识解决实际问题的能力。
二、实验环境1、操作系统:Windows 102、开发工具:Eclipse IDE3、数据库:MySQL 80三、实验内容(一)GUI 设计1、创建一个简单的登录界面,包括用户名和密码输入框以及登录和取消按钮。
使用布局管理器对界面组件进行合理布局,使其美观、易用。
2、设计一个主界面,包含菜单、工具栏、列表框、文本框等组件。
实现菜单和工具栏的功能响应,如文件的打开、保存,数据的查询、添加、修改和删除等。
(二)JDBC 操作1、建立与 MySQL 数据库的连接,配置数据库驱动程序和连接参数。
2、实现对数据库中用户表的查询操作,将查询结果显示在列表框中。
3、完成用户信息的添加、修改和删除功能,并及时更新界面显示。
(三)GUI 与 JDBC 整合1、在登录界面中,验证用户输入的用户名和密码是否与数据库中的用户信息匹配。
若匹配成功,进入主界面;否则,提示登录失败。
2、在主界面中,通过菜单或工具栏触发相应的 JDBC 操作,实现对数据库的管理,并将操作结果实时反馈到界面上。
四、实验步骤(一)GUI 设计步骤1、创建一个新的 Java 项目,并在项目中创建一个新的 Java 类作为登录界面。
2、导入所需的 GUI 组件库,如`javaawt`和`javaxswing`。
3、使用`JFrame`类创建登录窗口,并设置窗口的标题、大小和位置等属性。
4、在窗口中添加用户名和密码输入框,使用`JTextField`类创建。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验JDBC基础(综合)一、相关知识点1、JDBC基本概念2、元数据二、实验目的:理解元数据的概念,利用jdbc完成复杂业务逻辑。
三、实验内容:1、在booklib工程的DBUtil类中增加main函数,并在main函数中编写代码,列出booklib数据库中所有表的名字。
提示:会用到如下代码片段,请自行测试resultset中那一列为表名【实验结果与分析】A、写出代码部分。
public static void main(String[] args) throws SQLException {DatabaseMetaData dbmd = null;Connection conn = null;conn = DBUtil.getConnection();dbmd = conn.getMetaData();String types[] = {"VIEW","TABLE"};ResultSet rs = dbmd.getTables(null, null, "%", types);while(rs.next()){System.out.print(rs.getString("TABLE_NAME")+"\t");}2、在上述main函数中,增加代码,提取特定表中的字段信息,要求输出字段名字和数据类型。
提示:除了用课件中的方法,还可以用如下代码片段:A、写出代码部分。
public static void main(String[] args) throws SQLException { DatabaseMetaData dbmd = null;Connection conn = null;conn = DBUtil.getConnection();dbmd = conn.getMetaData();//String types[] = {"VIEW","TABLE"};ResultSet rs = dbmd.getColumns(null, "%", "beanbook","%");while(rs.next()){System.out.print(rs.getString("COLUMN_NAME")+" ");System.out.println(rs.getString("TYPE_NAME"));}}3、在BookLendManager类中设计函数public void calPenal();完成如下功能:提取所有超期未归还的借阅记录,输出其读者id、图书条码、借阅时间、超期天数(假设用户仅能借阅30天,请自行将数据库表中的已有数据的借阅时间往前调);计算每条数据的罚金(罚金算法为超期30天内每天0.1元,31-60天每天0.15元,60天以上每天0.2元),并写入数据库表的penalSum字段中。
函数编写完成后,通过main函数进行测试验证。
注:请注意事务控制【实验结果与分析】A、请提供程序代码。
public void calPenal() throws DbException {List<BeanBookLendRecord> result=new ArrayList<BeanBookLendRecord>();Connection conn=null;try {conn=DBUtil.getConnection();String sql="selectreaderid,bookBarcode,lendDate,TIMESTAMPDIFF(DAY,lendDate,now()) from BeanBookLendRecord where TIMESTAMPDIFF(DAY,lendDate,now())>30 and returndate is null";java.sql.PreparedStatement pst=conn.prepareStatement(sql);java.sql.ResultSet rs=pst.executeQuery();while(rs.next()){String readerid = rs.getString(1);String bookBarcode = rs.getString(2);java.sql.Date lendDate = (rs.getDate(3));int days = rs.getInt(4)-30;double penalSum = -1.0;if(days<=30){penalSum = 0.1*days;}else if(days>30 && days<=60){penalSum = 0.15*(days-30)+3;}else if(days>60){penalSum = 0.2*(days-60)+4.5+3;}System.out.println(readerid);System.out.println(bookBarcode);System.out.println(lendDate);System.out.println(penalSum+"\n");sql="update beanbooklendrecord set penalSum=? where readerid=? and bookBarcode=?";java.sql.PreparedStatement pst2=conn.prepareStatement(sql);pst2.setDouble(1, penalSum);pst2.setString(2, readerid);pst2.setString(3, bookBarcode);pst2.execute();pst2.close();}pst.close();rs.close();} catch (SQLException e) {e.printStackTrace();throw new DbException(e);}finally{if(conn!=null)try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public static void main(String[] args) throws DbException{ BookLendManager b = new BookLendManager();b.calPenal();}4、在BookLendManager类中设计函数public void stopReader(),完成如下功能:停止总罚金超过10元的读者服务(将其stopDate字段值设为当前时间,stopUserId值设为任意一个管理员)。
要求:(1)任意一个管理员的账号需要通过sql语句查询出来,不能为常量(2)统计读者罚金时,仅统计未归还的图书罚金(3)再编写函数public void stopReader2(),要求采用不同的方法(一种方法是找到相应的读者一个一个的停止服务,另一种方式是通过一个sql语句完成设置;注意第一种方法时需要进行事务控制)【实验结果与分析】A、请给出两个函数的代码。
public void stopReader() {Connection conn=null;String ad = null;try {conn=DBUtil.getConnection();conn.setAutoCommit(false);String sql="select userid from beansystemuser WHERE usertype like \"管理员\"";java.sql.Statement st=conn.createStatement();java.sql.ResultSet rs= st.executeQuery(sql);if(rs.next()) ad=rs.getString(1);// st.close();sql="select readerid,penalSum from beanbooklendrecord where penalSum>10 and returnDate is null";java.sql.Statement st2=conn.createStatement();java.sql.ResultSet rs2= st2.executeQuery(sql);// st2.close();while(rs2.next()) {sql="update beanreader set stopDate=? WHERE readerid=?";java.sql.PreparedStatement pst=conn.prepareStatement(sql);pst.setTimestamp(1, newjava.sql.Timestamp(System.currentTimeMillis()));pst.setString(2, rs2.getString(1));pst.executeUpdate();// pst.close();sql="update beanreader set stopUserId=? WHERE readerid=?";java.sql.PreparedStatement pst2=conn.prepareStatement(sql);pst2.setString(1, ad);pst2.setString(2, rs2.getString(1));pst2.executeUpdate();// pst2.close();}mit();conn.close();}catch (SQLException e) {e.printStackTrace();}finally{if(conn!=null)try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public void stopReader2() {Connection conn=null;String ad = null;try {conn=DBUtil.getConnection();conn.setAutoCommit(false);String sql="select userid from beansystemuser WHERE usertype like \"管理员\"";java.sql.Statement st=conn.createStatement();java.sql.ResultSet rs= st.executeQuery(sql);if(rs.next()) ad=rs.getString(1);sql="update beanreader set stopDate=?, stopUserId=? \r\n" +"where readerid in (\r\n" +" select readerid from beanbooklendrecord GROUP BY readerid HAVING sum(penalsum)>10 and \r\n" +" readerid in {\r\n" +" select readerid from beanbooklendrecord WHERE returndate is not null\r\n" +")\r\n" +")";java.sql.PreparedStatement pst=conn.prepareStatement(sql);pst.setTimestamp(1, newjava.sql.Timestamp(System.currentTimeMillis()));pst.setString(2, ad);pst.executeUpdate();mit();conn.close();}catch (SQLException e) {e.printStackTrace();}}。