JAVA语言与编程第14章JDBC编程

上传人:xt****7 文档编号:176744600 上传时间:2022-12-23 格式:PPT 页数:37 大小:458KB
收藏 版权申诉 举报 下载
JAVA语言与编程第14章JDBC编程_第1页
第1页 / 共37页
JAVA语言与编程第14章JDBC编程_第2页
第2页 / 共37页
JAVA语言与编程第14章JDBC编程_第3页
第3页 / 共37页
资源描述:

《JAVA语言与编程第14章JDBC编程》由会员分享,可在线阅读,更多相关《JAVA语言与编程第14章JDBC编程(37页珍藏版)》请在装配图网上搜索。

1、Java实用教程(第3版)第第14章章 JDBC编程编程T14.1 SQL语言语言T14.2 JDBC T14.4 访问数据库访问数据库T14.5 JDBC编程编程T14.6 批处理批处理T14.7 事务处理事务处理T14.8 综合实例综合实例T14.3 MySQL数据库数据库Java实用教程(第3版)第第14章章 JDBC编程编程JDBC是Java DataBase Connectivity的缩写,它是一种可用于执行SQL语句的Java API,主要提供了跨平台的数据库访问方法,为数据库应用开发人员提供了一种标准的应用程序编程接口,类似于Microsoft的ODBC,但ODBC只针对Wind

2、ows平台,而且ODBC要求在客户机上安装和注册,因而维护成本比较大。相对而言,JDBC的维护和部署要简单得多,因为它是真正的跨平台的API,屏蔽了具体数据库的差异性,如图所示。当Java程序访问数据库时,由JDBC API接口调用相应数据库的JDBC API实现来访问数据库,从而使得无须改变Java程序就能访问不同的数据库。本书介绍最新的。图图14.1 Java程序访问数据库程序访问数据库Java实用教程(第3版)14.1 SQL语言语言h1.查询语句查询语句格式:select col1,col2,.,coln from table_name where condition_expressi

3、on描述:其中参数col1、col2等均为列名,table_name为表名,condition_expression为条件表达式。select、from、where都是保留字。功能:从数据库表中检索满足条件的记录。例如下面的语句:select*from student;表示将表student中的全部数据检索出来。这里“*”代表所有列。select id,name,math,english from student where math+english80 and math+english100;表示将表student中的满足math与english之和在80100之间的数据检索出来。其中and

4、是保留字,表示逻辑操作“与”。类似的还有not、or。select*from student where name like 王%;表示将表student中的所有姓王的同学的数据检索出来。其中like是保留字,表示字符串比较,“%”代表任意的字符串。Java实用教程(第3版)14.1 SQL语言语言h2.插入语句插入语句格式:insert into table_name(col1,col2,.,coln)values(v1,v2,.,vn)功能:在表table_name中插入一条记录,各列的值依次分别为v1、v2、vn等,若某列的列名未给,则值为NULL。其中insert、into、value

5、s都是保留字。注意注意:若所有的列名都未给,则在values中必须依次给出所有列的值;给出的值的类型必须与对应的列的类型相一致。例如下面的语句:insert into student values(001108,刘中华,男,95,94)表示在表student中插入一条记录,各列的值依次为“001108”、“刘中华”、“男”、95、94。该表只有五列。insert into student(id,math,english)values(001109,96,91)表示在表student中插入一条记录,其id列的值为001109、math列的值为96、english列的值为91,其余列的值均为nul

6、l。Java实用教程(第3版)14.1 SQL语言语言h3.更新语句更新语句格式:update table_name set col1=v1,col2=v2,.,coln=vnwhere condition_expression功能:更新表table_name中满足条件的记录,使列col1的值为v1、列col2的值为v2、列coln的值为vn等。其中update、set、where都是保留字。注意注意:如不给出条件,则更新表中所有记录。例如下面的语句update student set math=0,english=0表示将表student中的所有记录的math列、english列的值变为0。

7、update student set math=0 where sex=男表示将表student中的满足sex=男的记录的math值置为0。update student set english=0 where name like 刘%表示将表student中的所有姓刘的记录的english值置为0。Java实用教程(第3版)14.1 SQL语言语言h4.删除语句删除语句格式:delete from table_name where condition_expression功能:删除表table_name中满足条件的记录。其中delete、from、where都是保留字。特别注意:如不给出条件,

8、则删除表中所有记录。例如下面的语句:delete from student where math+english30;表示删除表student中所有满足“math+english”按钮进入下一步。(2)进入如图所示界面,在中,默认目录为。确认后单击“Install”按钮开始安装。安装完成后出现创建一个账号的画面。选择“Skip Sign-Up”,单击“Next”按钮,跳过这一步,最后单击“Finish”按钮完成安装。图图14.7 MySQL安装安装Java实用教程(第3版)14.3.2 MySQL服务器的配置服务器的配置MySQL安装完成后,要对MySQL服务器进行配置,其配置步骤如下:(1)

9、安装完毕后就选择“Config the MySQL server now”复选框进入配置向导。选择“Detailed Configuration”的配置类型。(2)单击“Next”按钮进行服务器类型选择,这里选择“Developer Machine”。(3)单击“Next”按钮进入数据库使用情况对话框,这里选择“Multifunctional Database”。(4)进入InnoDB表空间对话框,这里可以修改InnoDB表空间文件的位置,如图所示。默认位置是MySQL服务器数据目录,这里不做修改,直接下一步。图图14.8 表空间对话框表空间对话框Java实用教程(第3版)14.3.2 MyS

10、QL服务器的配置服务器的配置(5)接下来进入并发连接选择对话框,这里选择“Decision Support(DSS)/OLAP”。(6)进入联网选项对话框,如图所示。默认情况是启用TCP/IP网络,默认端口为3306,这里不做修改,直接下一步。端口图图14.9 联网选项对话框联网选项对话框Java实用教程(第3版)14.3.2 MySQL服务器的配置服务器的配置(7)进入字符集选择对话框,前面的选项一直是按默认设置进行的,这里要做一些修改。选中“Manual Selected Default Character Set/Collation”选项,在“Character Set”选框中将lati

11、n1修改为gb2312,如图所示。图图14.10 设置字符集设置字符集修改字符集为gb2312Java实用教程(第3版)14.3.2 MySQL服务器的配置服务器的配置(8)下一步进入服务选项对话框,服务名为MySQL,这里不做修改。(9)下一步是安全选项对话框,如图所示,在密码输入框中输入root用户密码。设置root用户密码图图14.11 安全选项对话框安全选项对话框(10)设置完毕后,随后一步是提交配置,单击“Execute”按钮即可完成。Java实用教程(第3版)14.3.3 MySQL的环境的环境MySQL安装和配置完后,打开开始程序MySQLMySQL Commend Line C

12、lient就进入到MySQL客户端,在客户端窗口输入密码,就以root用户身份登陆到MySQL服务器,在窗口中出现命令行,如图,在命令行中输入SQL语句就可以操作MySQL数据库。以root用户身份登陆可以对数据库进行所有的操作。图图14.12 MySQL命令行命令行Java实用教程(第3版)14.3.3 MySQL的环境的环境MySQL有一个data目录,用于存放数据库文件,其默认的路径为:C:Program FilesMySQLMySQL Server 5.0data。在data目录中MySQL为每一个数据库建立一个文件夹,所有的表文件存放在相应的数据库文件夹中。使用MySQL非常简单,这

13、里介绍MySQL的常用命令,如表所示。命令格式示例连接到MySQLMySQL h主机地址-u用户名 p密码MySQL h127.0.0.1 uroot p123456 退出MySQLexitexit创建数据库create database 数据库名create database xscj创建表use 数据库名create table 表名(字段列表)create table xs(id int(6)not null primary key,name char(10)not null,profession char(20)not null)删除数据库drop database 数据库名ddata

14、base xscj删除表drop table 表名drop table xs插入记录insert into表名 values(字段值列表)insert into xs(100001,王军,计算机)查询记录select 字段列表 from 表名 where 约束条件select name from xs whereid=100001删除记录delete from 表名 where 约束条件 delete from xs where id=100002修改记录update 表名 set 列名=值where约束条件update xs set name=王涛 whereid=100002表表14.1

15、MySQL的基本命令的基本命令Java实用教程(第3版)14.3.3 MySQL的环境的环境现在在MySQL命令行窗口上使用这些命令。打开开始程序MySQLMySQL Commend Line Client就进入到MySQL客户端,在客户端窗口输入密码,就以root用户身份登陆到MySQL服务器,输入如图所示的命令,即可完成数据库的创建,表的创建,插入记录和查询记录。图图14.13 使用使用MySQL命令命令Java实用教程(第3版)14.4 访问数据库访问数据库在Java中,访问数据库的基本步骤如下:(1)加载驱动程序。DriverManager类是驱动程序管理器类,负责管理驱动程序。Dri

16、verManager类的registerDriver()方法用来注册驱动程序类的实例。(2)建立连接。加载驱动程序后,调用DriverManager类的getConnection()方法得到一个与数据库的连接,返回一个Connection对象。(3)访问数据库,即执行SQL语句。得到数据库的连接后,就可以访问数据库了。调用Connection对象的createStatement()、prepareStatement()方法来执行SQL语句,返回结果集。Java实用教程(第3版)14.4 访问数据库访问数据库(4)处理结果集,最后关闭结果集、断开连接。以上这些操作都是通过调用相应类的方法来实现的

17、,JDBC API由和包组成。包定义了访问数据库的接口和类,如图所示。下面介绍一些最常用的类及其方法。图包中主要的类和接口图包中主要的类和接口Java实用教程(第3版)14.4.1 加载并注册数据库驱动加载并注册数据库驱动h1.Driver接口接口是所有JDBC驱动程序需要实现的接口,下面是不同数据库实现该接口的驱动程序类名。这是Oracle数据库的JDBC驱动程序的类名,Oracle的JDBC驱动不需要单独下载,其位于安装文件的lib目录下。这两个都是SQLServer数据库的JDBC驱动类名。只不过上面的是SQLServer 2000的JDBC驱动类名,下面的是SQLServer 2005

18、的JDBC驱动类名。这是MySQL的JDBC驱动的类名。Driver接口中提供了一个Connect()方法,用来建立到数据库的连接。Connection connect(String url,Properties info)throws SQLException功能:试图创建一个到给定 URL 的数据库连接。Java实用教程(第3版)14.4.1 加载并注册数据库驱动加载并注册数据库驱动h2.加载与注册加载与注册JDBC驱动器驱动器加载JDBC驱动是调用Class类的静态方法forName(),向其传递要加载的JDBC驱动的类名。在运行时,类加载器从CLASSPATH环境变量中定位和加载JDB

19、C驱动类。在加载驱动程序类后,需要注册驱动程序类的一个实例。DriverManager类是驱动程序管理器类,负责管理驱动程序,这个类中的所有方法都是静态的。在DriverManager类中提供了registerDriver()方法来注册驱动程序类的实例。static void registerDriver(Driver driver)throws SQLException功能:向DriverManager注册给定驱动程序。driver是将向DriverManager注册的新 的JDBC Driver。static void setLoginTimeout(int seconds)功能:设置驱动

20、程序试图连接到某一数据库时将等待的最长时间,以秒为单位。Java实用教程(第3版)14.4.2 建立到数据库的连接建立到数据库的连接调用DriverManager类的getConnection()方法建立到数据库的连接,返回一个Connection对象。Connection接口负责维护Java应用程序与数据库之间的连接。public static Connection getConnection(String url,String user,String password)throws SQLException功能:试图建立到给定数据库URL的连接。user是用户名,password是用户的密

21、 码。其中url的形式:url=“jdbc:subprotocol:data source identifier”subprotocol表示与特定数据库系统相关的子协议,data source identifier表示数据源信息。对于Oracle数据库连接,其url的形式:url=“jdbc:oracle:thin:localhost:1521:xscj”对于SQLServer数据库连接,其url有以下两种形式:url=“jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=xscj”url=“jdbc:sqlserver:/localho

22、st:1433;DatabaseName=xscj”上面的url是对应于SQLServer 2000数据库的,下面的url是对应于SQLServer 2005数据库的。Java实用教程(第3版)14.4.2 建立到数据库的连接建立到数据库的连接对于MySQL数据库连接,其url的形式:url=“jdbc:mysql:/localhost:3306/xscj”Connection接口的常用方法如下:(1)Statement createStatement()throws SQLException:功能:创建一个Statement对象来将 SQL 语句发送到数据库。(2)PreparedState

23、ment prepareStatement(String sql)throws SQLException功能:创建一个PreparedStatement 对象来将参数化的SQL语句发送到数据库。不带参数的 SQL 语句通常使用 Statement 对象执行。如果多次执行相同的 SQL 语句,使用 PreparedStatement 对象可能更有效。(3)void commit()throws SQLException:功能:使所有上一次提交/回滚后进行的更改成为持久更改,并释放此Connection对象当前持有的所有数据库锁。(4)void setAutoCommit(boolean auto

24、Commit)throws SQLException功能:将此连接的自动提交模式设置为给定状态。如果连接处于自动提交模式下,则它的所有 SQL 语句将被执行并作为单个事务提交。否则,它的 SQL 语句将聚集到事务中,直到调用 commit 方法或 rollback 方法为止。默认情况下,新连接处于自动提交模式。Java实用教程(第3版)14.4.2 建立到数据库的连接建立到数据库的连接(5)void rollback()throws SQLException:功能:取消在当前事务中进行的所有更改,并释放此 Connection 对象当前持有的所有数据库锁。(6)boolean isReadOn

25、ly()throws SQLException:功能:查询此Connection对象是否处于只读模式。(7)boolean isClosed()throws SQLException:功能:查询此 Connection 对象是否已经被关闭。(8)void close()throws SQLException:功能:立即释放此Connection对象的数据库和 JDBC 资源。Java实用教程(第3版)14.4.3 访问数据库访问数据库h1.Statement接口接口调用Connection对象的createStatement()方法创建一个Statement对象。Statement接口的常用方

26、法如下:boolean execute(String sql)throws SQLException:功能:执行给定的 SQL 语句。(2)int executeUpdate(String sql)throws SQLException:功能:执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的SQL语句(如 SQL DDL 语句)。(3)ResultSet executeQuery(String sql)throws SQLException:功能:执行给定的SQL语句,该语句返回单个ResultSet对象。(4)void addBa

27、tch(String sql)throws SQLException功能:将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中。通过调用方法 executeBatch 可以批量执行此列表中的命令。(5)int executeBatch()throws SQLException:功能:将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。Java实用教程(第3版)14.4.3 访问数据库访问数据库h2.PreparedStatement接口接口PreparedStatement接口的常用方法如下:(1)void setBoolean(int param

28、eterIndex,boolean x)throws SQLException:功能:将指定参数设置为给定boolean值。parameterIndex 的第一个参数是1,第二个参数是 2,x 是参数值。(2)void setInt(int parameterIndex,int x)throws SQLException:功能:将指定参数设置为给定int值。(3)void setFloat(int parameterIndex,float x)throws SQLException:功能:将指定参数设置为给定float值。(4)void setDouble(int parameterIndex

29、,double x)throws SQLException功能:将指定参数设置为给定double值。(5)void setString(int parameterIndex,String x)throws SQLException功能:将指定参数设置为给定String值。(6)void setDate(int parameterIndex,Date x)throws SQLException功能:使用运行应用程序的虚拟机的默认时区将指定参数设置为给定值。Java实用教程(第3版)14.4.3 访问数据库访问数据库h3.ResultSet接口接口ResultSet接口的常用方法如下:(1)Str

30、ing getString(int columnIndex)throws SQLException:功能:获取此ResultSet 对象的当前行中指定列的值,参数columnIndex代表字段的索引位置。(2)String getString(String columnLabel)throws SQLException:功能:获取此ResultSet对象的当前行中指定列的值,参数columnLabel代表字段值。(3)int getInt(int columnIndex)throws SQLException:功能:获取此ResultSet对象的当前行中指定列的值,参数columnIndex代

31、表字段值。(4)int getInt(String columnLabel)throws SQLException:功能:获取此ResultSet对象的当前行中指定列的值,参数columnLabel代表字段 值。Java实用教程(第3版)14.4.3 访问数据库访问数据库(5)boolean absolute(int row)throws SQLException功能:将光标移动到此ResultSet对象的给定行编号。(6)boolean previous()throws SQLException功能:将光标移动到此ResultSet对象的上一行。(7)boolean first()throw

32、s SQLException功能:将光标移动到此ResultSet 对象的第一行。(8)boolean last()throws SQLException功能:将光标移动到此ResultSet 对象的最后一行。(9)boolean next()throws SQLException功能:将游标移到下一行,ResultSet游标最初位于第一行之前,第一次调用next()方法使第一行成为当前行。Java实用教程(第3版)14.5 JDBC编程编程现在就开始编写一个使用后台数据库为MySQL的JDBC程序。这需要在当前的工程中引入MySQL的JDBC驱动程序。方法是:右击工程“MyProject_1

33、4”,选择“Build Path”“Add External Archives”,出现一个文件选择对话框,如图所示,找到磁盘上的MySQL的JDBC驱动程序,选中它,单击“打开”按钮,MySQL的JDBC驱动程序就被加入到当前的工程中。图图14.15 引入引入MySQL的的JDBC程序程序Java实用教程(第3版)14.5 JDBC编程编程【例例】编写JDBC应用程序,使用已创建的xscj数据库和其中的xs表。【例例】向数据库xscj中的xs表中添加记录、修改记录、删除记录。【例例】使用PreparedStatement对象对xscj数据库中的xs表中添加记录。Java实用教程(第3版)14.

34、6 批处理批处理在Statement接口中提供了批量更新操作的方法:lvoid addBatch(String sql)throws SQLException功能:将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中。lint executeBatch()throws SQLException功能:将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。返回数组的int元素的排序对应于批中的命令,批中的命令根据被添加到批中的顺序排序。【例例】运用批量更新操作向数据库xscj中的xs表中添加一批数据。Java实用教程(第3版)14.7 事务处理事务处理当

35、一个连接对象被创建时,默认情况下事务被设置为自动提交状态。这意味着每次执行一条SQL语句时,如果执行成功,就会自动调用commit()方法向数据库提交,也就不能再回滚了。为了将多条SQL语句作为一个事务执行,可以设置Connection对象的setAutoCommit(false)。然后在所有的SQL语句成功执行后,显式调用Connection对象的commit()方法来提交事务,或者在执行出错时调用Connection对象的的rollback()方法来回滚事务。【例例】使用事务处理功能并使用了JDBC的批处理向xscj数据库的xs表中添加数据。Java实用教程(第3版)14.8 综合实例综合实例在这个综合实例中,使用另一个数据库company。在前面的示例中,所用的数据库xscj和xs表是在MySQL Command Line Client命令行中输入SQL语句创建的。这里改在Java程序中创建数据库和表。综合运用JDBC编程的批处理和事务处理。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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