收藏 分销(赏)

java数据库连接.pptx

上传人:天**** 文档编号:9282383 上传时间:2025-03-19 格式:PPTX 页数:59 大小:1.37MB 下载积分:14 金币
下载 相关 举报
java数据库连接.pptx_第1页
第1页 / 共59页
java数据库连接.pptx_第2页
第2页 / 共59页


点击查看更多>>
资源描述
清华大学出版社,Arial,或,Frutiger 55 Roman 25pt,华文细黑简,25pt,Arial,或,Frutiger 55 Roman 25pt,华文细黑简,25pt,Arial,或,Frutiger 55 Roman 25pt,华文细黑简,25pt,Arial,或,Frutiger 55 Roman 25pt,华文细黑简,25pt,Arial,或,Frutiger 55 Roman 25pt,华文细黑简,25pt,Arial,或,Frutiger Bold 40pt,黑体简,40pt,#,Java,语言程序设计,(,第,2,版,),张思民编著,本章主要内容:,10.1,JDBC,概述,10.2,SQL,语句简介,10.3 JDBC API,10.3.1 JDBC API,简介,10.3.2 JDBC,驱动程序及,URL,一般方法,10.4 JDBC,编程实例,10.4.1,数据库编程的一般步骤,10.4.2,数据表操作,10.4.3,数据库应用,10.1,JDBC,概述,JDBC,即,Java,数据库连接(,Java Database Connectivity,)。它由一组用,Java,语言编写的类和接口组成。,JDBC,为数据库提供了一个标准的,API,,(,API,,即应用程序接口,,Application Program Interface,)。使我们能够用纯,Java,来编写数据库应用程序。,10.1,JDBC,概述,JDBC,的基本结构由,Java,应用程序、,JDBC,管理器、驱动程序或,JDBC-ODBC,桥和数据库四部分组成。,10.2,SQL,语句简介,SQL,是英文,Structured query language,的缩写,意思为结构化查询语言。,1,、关系型数据库,一个典型的关系型数据库通常由一个或多个数据表组成。数据库中的所有数据或信息都被保存在这些数据表中。数据库中的每一个表都有惟一的表名,数据表由行和列组成,其中列称为字段,包括了字段名称、数据类型以及字段属性等信息,而行称为记录,包含每一字段的具体数据值。,学生数据库的组成及相关名词,10.2,SQL,语句简介,2,、数据查询,select,语句的语法格式如下:,select,字段,1,字段,2,from,表名,where,限制条件,;,还可以使用通配符“,%”,来代替任何字符串,常用于模糊查询。例如:,select,学号,姓名,年龄,家庭住址,from,学生情况表,where,姓名,LIKE,李,%;,上述,SQL,语句将会查询所有姓李的学生记录。,10.2,SQL,语句简介,3,、创建数据表,create table,为建立新的数据表语句。,也可以使用可选的条件选项:,例如:,create table,表名,(,字段,1,数据类型,字段,2,数据类型,);,create table,表名,(,字段,1,数据类型,限制条件,字段,2,数据类型,限制条件,);,create table,学生情况表,(,学号,varchar(6),姓名,varchar(15),年龄,number(3),家庭住址,varchar(20),联系电话,varchar(20);,10.2,SQL,语句简介,4,、向数据表中插入数据,用,insert,语句向数据表中插入或添加新的数据行(或称为记录)。,例如:,insert into,表名,(,字段,1,字段,n)values(,字段值,1,,字段值,n);,insert into,学生情况表,(,姓名,年龄,家庭住址,联系电话,),values(,李明,22,北京市西祠胡同,87654321);,10.2,SQL,语句简介,5,、更新记录,例如:,update,表名,set,字段,1=,新值,1,字段,2=,新值,2,where,限制条件,;,update,学生情况表,set,年龄,=,年龄,+1,where,姓名,=,李明,;,10.2,SQL,语句简介,6,、删除记录,例如:,delete from,表名,where,限制条件,;,delete from,学生情况表,where,姓名,=,李明,;,10.2,SQL,语句简介,7,、删除数据表,使用,drop table,命令删除某个数据表以及该表中的所有记录。,例如:,drop table,表名,;,drop table,学生情况表,;,10.3 JDBC API,10.3.1 JDBC API,简介,JDBC,(,Java DataBase Connection,)是,Java,数据库连接,API,。简单地说,,JDBC,要完成三件事:,(,1,)建立数据库的连接;,(,2,)向数据库发出请求,通过,SQL,命令操作数据库中的数据,包括查询、添加、修改、删除等操作;,(,3,)获取并处理数据库返回的结果。,10.3.1 JDBC API,简介,类或接口,作用,DriverManager,类,数据库驱动程序的加载,及与数据库建立连接。,Connection,接口,建立与指定数据库的连接。,Statement,接口,向已经建立了连接的数据库发送及处理,SQL,命令。,ResultSet,接口,返回数据库中执行,SQL,命令的结果。,JDBC,中主要的类和接口,10.3.1 JDBC API,简介,1,、,DriverManager,类,DriverManager,类是,JDBC,的管理器,负责管理,JDBC,驱动程序,跟踪可用的驱动程序并在数据库和相应驱动程序之间建立连接,它提供了用于管理一个或多个数据库驱动程序所必需的功能。,成员方法,功能,getConnection(String url),使用指定的数据库,URL,创建一个连接。,getConnection(String url,String user,String password),使用指定的数据库,URL,、用户名和用户密码创建一个连接。,10.3.1 JDBC API,简介,2,、,Connection,接口,Connection,这个接口抽象了大部分与数据库的交互活动。通过建立的连接,可以向数据库发送,SQL,语句并返回执行的结果。,下面说明如何打开一个与位于,URL jdbc:odbc:testDB,的数据库的连接。所用的用户标识符为,myName,,口令为,Java,:,String url=jdbc:odbc:testDB;,Connection con=DriverManager.getConnection(url,myName,Java);,10.3.1 JDBC API,简介,3,、,Statement,接口,当建立连接后,可以向数据库发送,SQL,语句访问数据库和读取访问的结果。,Statement,这个接口可在这个连接中执行和处理,SQL,语句。,成员方法,功能,execute(String,sql),执行给定的,SQL,语句,该语句可能返回多个结果。,executeQuery(String,sql),执行给定的,SQL,语句,该语句返回单个,ResultSet,对象。,executeUpdate(String,sql),执行给定,SQL,语句,其,SQL,语句为,INSERT,、,UPDATE,或,DELETE,语句。,close(),立即释放此,Statement,对象的数据库和,JDBC,资源,而不是等待该对象自动关闭时发生此操作。,10.3.1 JDBC API,简介,4,、,ResultSet,接口,ResultSet,对象表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。,ResultSet,对象具有指向其当前数据行的指针。最初,指针被置于第一条记录之前。可以通过,next(),方法将指针移动到下一记录。,补充:连接数据库的步骤,1,、注册驱动(只做一次),2,、建立连接(,Connection,),3,、创建执行,SQL,的语句(,Statement,),执行语句,4,、处理执行结果(,ResultSet,),5,、释放资源(,Close,),如何添加驱动?,1,、首先建一个工程,2,、右击工程如图属性添加,10.3.2 JDBC,驱动程序及,URL,一般方法,1,、数据库的,JDBC,驱动程序,JDBC,具有连接各种不同数据库的能力,对于不同的数据库,JDBC,对应有不同的驱动程序,。,例如:,(,1,),ODBC,数据源的,JDBC,驱动程序名称为:,sun.jdbc.odbc.JdbcOdbcDriver,通过以下语句加载和注册这个驱动程序,Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);,(,2,),Microsoft SQL Server 2000,的,JDBC,驱动程序名称为:,com.microsoft.jdbc.sqlserver.SQLServerDriver,同样,通过以下语句加载和注册这个驱动程序,Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);,DriverManager.registerDriver(com.microsoft.jdbc.sqlserver.SQLServerDriver);,10.3.2 JDBC,驱动程序及,URL,一般方法,2,、,JDBC URL,的一般方法,例如:设驱动程序类型为“,ODBC,数据源”,数据源名称为“,testbook”,。则,String url=jdbc:odbc:testbook;,建立数据库连接:,Connection con=DriverManager.getConnection(url);,10.4 JDBC,编程实例,10.4.1,数据库编程的一般步骤,1,、加载和注册驱动程序,Class.forName(JDBC,驱动程序名称,);,2,、连接数据库,Connection,连接变量,;,连接变量,=DriverManager.getConnection(,jdbc:odbc:,数据源名称,用户名,密码,);,10.4 JDBC,编程实例,10.4.1,数据库编程的一般步骤,3,、向数据库发送,SQL,语句,处理结果,(,1,)建立,SQL,语句对象,Statement SQL,语句对象名,;,SQL,语句对象名,=,连接变量,.createStatement();,(,2,)处理执行,SQL,语句的执行结果,处理查询记录或添加记录的,SQL,语句为:,ResultSet,结果集对象名,=SQL,语句对象名,.,executeQuery(SQL,语句,);,10.4 JDBC,编程实例,10.4.1,数据库编程的一般步骤,处理修改记录或删除记录的,SQL,语句为:,结果集对象名,=SQL,语句对象名,.executeUpdate(SQL,语句,);,4,、关闭数据库的连接,对数据库操作完毕后,应该将与数据库的连接关闭:,连接变量,.close();,同时还应该将,SQL,语句对象释放。,10.4.2 数据表操作,1,、创建数据表,【,例,10-1】,创建学生表,student,。此表有三个字段:学号,(id),、姓名,(name),及成绩,(score),。,import java.sql.*;/,引入,java.sql,包,public class c1,public static void main(String args),String JDriver=sun.jdbc.odbc.JdbcOdbcDriver;/,声明,JDBC,驱动程序对象,String conURL=jdbc:odbc:TestDB;/,定义,JDBC,的,URL,对象,try,Class.forName(JDriver);/,加载,JDBC-ODBC,桥驱动程序,catch(java.lang.ClassNotFoundException e),System.out.println(ForName:+e.getMessage();,try,Connection con=DriverManager.getConnection(conURL);/,连接数据库,URL,Statement s=con.createStatement();/,建立,Statement,类对象,String query=create table student(,+id char(10),+name char(15),+score integer,+);/,创建一个含有三个字段的学生表,student,s.executeUpdate(query);/,执行,SQL,命令,s.close();/,释放,Statement,所连接的数据库及,JDBC,资源,con.close();/,关闭与数据库的连线,catch(SQLException e)System.out.println(SQLException:+e.getMessage();,其中,,create table student(id char(10),name char(15),score integer);,这个,SQL,语句表示建立一个名为,student,的表,包含,id(,字符型,宽度为,10),、,name(,字符型,宽度为,15),与,score(,数字型,),三个字段。,这段程序的操作结果是创建了一个数据库中,student,表的结构,表中还没有任何记录。,2,、向数据表中插入数据,【,例,10-2】,在上例创建的数据表,student,中插入三个学生的记录。,import java.sql.*;,public class c2,public static void main(String args),String JDriver=sun.jdbc.odbc.JdbcOdbcDriver;,String conURL=jdbc:odbc:TestDB;,try,Class.forName(JDriver);,catch(java.lang.ClassNotFoundException e),System.out.println(ForName:+e.getMessage();,try,Connection con=DriverManager.getConnection(conURL);,Statement s=con.createStatement();,String r1=insert into student values(+0001,王明,80);,String r2=insert into student values(+0002,高强,94);,String r3=insert into student values(+0003,李莉,82);,/,使用,SQL,命令,insert,插入三条学生记录到表中,s.executeUpdate(r1);,s.executeUpdate(r2);,s.executeUpdate(r3);,s.close();,con.close();,catch(SQLException e),System.out.println(SQLException:+e.getMessage();,图 程序,2,的运行结果,3,、更新数据,【,例,10-3】,修改上例数据表中的第二条和第三条记录的学生成绩字段值,并把修改后的数据表的内容输出到屏幕上。,import java.sql.*;,public class c3,public static void main(String args),String JDriver=sun.jdbc.odbc.JdbcOdbcDriver;,String conURL=jdbc:odbc:TestDB;,String id=0002,0003;,int score=89,60;,try,Class.forName(JDriver);,catch(java.lang.ClassNotFoundException e),System.out.println(ForName:+e.getMessage();,try,Connection con=DriverManager.getConnection(conURL);,/,修改数据库中数据表的内容,PreparedStatement ps=con.prepareStatement(,UPDATE student set score=?where id=?);,int i=0,idlen=id.length;,do ps.setInt(1,scorei);,ps.setString(2,idi);,ps.executeUpdate();/,执行,SQL,修改命令,+i;,while(iid.length);,ps.close();,/,查询数据库并把数据表的内容输出到屏幕上,Statement s=con.createStatement();,ResultSet rs=s.executeQuery(select*from student);,while(rs.next(),System.out.println(rs.getString(id)+,t+rs.getString(name)+,t+rs.getInt(score);,s.close();,con.close();,catch(SQLException e),System.out.println(SQLException:+e.getMessage();,在这个程序中使用了,PreparedStatement,类,它提供了一系列的,set,方法来设定位置。请注意程序中,PreparedStatement(),方法中的参数“?”。程序中的语句:,PreparedStatement ps=con.prepareStatement(UPDATE student set score=?where id=?);,ps.setInt(1,scorei);/,将,scorei,的值作为,SQL,语句中第一个问号所代表参数的值,ps.executeUpdate();,其中,UPDATE student set score=?where id=?,这个,SQL,语句中各字段的值并没指定,而是以“?”表示。程序必须在执行,ps.executeUpdate(),语句之前指定各个问号位置的字段值。例如,用,ps.setInt(1,scorei),语句中的参数,1,指出这里的,scorei,的值是,SQL,语句中第一个问号位置的值。当前面两条语句执行完后,才可执行,ps.executeUpdate(),语句,完成对一条记录的修改。,程序中用到的查询数据库并把数据表的内容输出到屏幕的语句是:,ResultSet rs=s.executeQuery(select*from student);,while(rs.next(),System.out.println(rs.getString(id)+,t+rs.getString(name)+,t+rs.getInt(score);,其中,,executeQuery(),返回一个,ResultSet,类的对象,rs,,代表执行,SQL,查询语句后所得到的结果集,之后再在,while,循环中使用对象,rs,的,next(),方法将返回的结果一条一条地取出,直到,next(),为,false,。,运行结果如下:,0001,王明,80,0002,高强,89,0003,李莉,60,4,、删除记录,【,例,10-4】,删除表中第二条记录,然后把数据表的内容输出。,import java.sql.*;,public class c4,public static void main(String args),String JDriver=sun.jdbc.odbc.JdbcOdbcDriver;,String conURL=jdbc:odbc:TestDB;,try,Class.forName(JDriver);,catch(java.lang.ClassNotFoundException e),System.out.println(ForName:+e.getMessage();,try,Connection con=DriverManager.getConnection(conURL);,Statement,s=con.createStatement();,/,删除第二条记录,PreparedStatement,ps=con.prepareStatement(,delete from student where id=?);,ps.setString(1,0002);,ps.executeUpdate();,/,执行删除,/,查询数据库并把数据表的内容输出到屏幕上,ResultSet rs=s.executeQuery(select*from student);,while(rs.next(),System.out.println(rs.getString(id)+t+,rs.getString(name)+t+rs.getString(score);,s.close();,con.close();,catch(SQLException e),System.out.println(SQLException:+e.getMessage();,PrepareStatement:,在使用,PrepareStatement,插入数据时,数据表的指针首先指向最后一行,具体内容不知道,等待用户分别设置。,prepareStatement,与,Statement,的区别,1:,创建时的区别:,Statement stm=con.createStatement();PreparedStatement pstm=con.prepareStatement(sql);,执行的时候,:,stm.execute(sql);pstm.execute();2:pstm,一旦绑定了,SQL,此,pstm,就不能执行其他的,Sql,,即只能执行一条,SQL,命令。,stm,可以执行多条,SQL,命令。,3:,对于执行同构的,sql,(只有值不同,其他结构都相同),用,pstm,的执行效率比较的高,对于异构的,SQL,语句,,Statement,的执行效率要高。,4,:当需要外部变量的时候,,pstm,的执行效率更高,.,5,:,prepareStatement,避免了,mysql,的注入漏洞。实际开发过程中主要使用的。,10.4.3,数据库应用,【,例,10-5】,在前面例子使用过的数据库,TestDB.mdb,中建立数据表,dic,,此表中有二个字段:单词、解释。在表中输入若干条记录。,【,例,10-6】,设计一个简易商品管理系统,具有对商品名称及价格的添加、修改、查询功能。,【,例,10-7】,利用套接字技术实现网络数据库的查询。,由于出于安全的考虑,,Applet,应用程序是不能对本地机文件进行读写操作的,在本例中,我们利用套接字技术实现,Applet,应用程序对数据库的访问。,Applet,应用程序只是利用套接字连接向服务器发送一个查询条件,而服务器负责对数据库的查询,然后服务器再将查询的结果利用建立的套接字连接返回给客户端。用主种方式访问数据库,在客户端不需要任何数据库驱动程序。,运行时,先启动服务器端,然后在客户端通过浏览器执行,Applet,程序,客户端程序运行结果如图所示。,【,例,10-8】,应用,JDBC,连接,SQL SERVER,数据库。,以连接,URL,的形式传递数据库连接信息,其一般形式为:,jdbc:microsoft:sqlserver:/servername:1433,设我们在数据库中建立了,testDB,数据库,则连接代码如下:,con=DriverManager.getConnection(,“jdbc:microsoft:sqlserver:/localhost:1433;,DatabaseName=testDB,userName,password);,【,例,10-9】,动态选择加载驱动程序的类型。,本章结束,!,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服