《Java语言》-第10章 数据库编程_第1页
《Java语言》-第10章 数据库编程_第2页
《Java语言》-第10章 数据库编程_第3页
《Java语言》-第10章 数据库编程_第4页
《Java语言》-第10章 数据库编程_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java语言程序设计第10章数据库编程本章位置掌握JDBC编程。1掌握数据库数据的基本操作2能力点第10章数据库编程Java语言程序设计主要内容1JDBC编程技术概述2使用JDBC驱动程序编程3数据库的基本操作4案例分析5任务训练Java语言程序设计第10章数据库编程10.1JDBC编程技术概述

在许多应用中涉及到数据库的操作,其中相当一部分是以数据库为核心来组织整个系统的,因此Java程序对数据库的访问与操作成为重要的功能,本章将介绍这方面的内容。JDBC(JavaDataBaseConnectivity)是Java语言定义的一个SQL调用级的数据库编程接口。通过JDBCAPI,编程人员不用关心底层数据库的细节差别,就能以统一的应用程序接口访问数据库。Java语言程序设计第10章数据库编程

10.1.1数据库基础知识

数据库技术是数据管理的专用技术,主要研究如何科学地组织和存储数据,如何高效地获取和处理数据,数据库系统是计算机信息系统的基础和主要组成部分。

所有的数据库系统都是基于某种数据模型的。所谓数据模型,简单地说就是数据库的逻辑结构。关系数据库因为支持关系模型而得名。所谓关系模型,形象地说就是二维表结构,也称为关系表,主流的关系数据库有ACCESS、SQLServer、Oracle、MySQL等。第10章数据库编程Java语言程序设计10.1JDBC编程技术概述10.1.2SQL语言

SQL语言是关系型数据库的标准操作语言。数据操作语言中定义了数据库的主要操作,包括数据的查询、插入、删除和修改,数据库前端应用的主要任务是用图形用户界面将这些操作包装起来,提供多种方便使用的数据库有关的功能。

查询数据

数据库中保存数据,其目的是为了供用户使用。用户要使用数据库中的数据,就必须把它们从数据库的表中提取出来,这个过程就称为“查询”,需要用查询语句SELECT。

插入数据

一个表在刚建立时只有表结构,没有数据,要向表中录入数据需要使用插入语句INSERT,数据的插入是以记录为单位进行。

删除数据

当表中的数据有误或者失效时,可以用DELETE语句删除整条记录。

修改数据

修改表中的数据之前,首先需要把修改的数据查询出来,然后用UPDATE语句完成必要的修改,最后把修改后的记录保存回原来的表中。第10章数据库编程Java语言程序设计10.1JDBC编程技术概述10.1.3JDBC

JDBC是Sun公司提供的Java数据库连接技术,是Java程序连接关系数据库的标准,一种用Java语言实现的数据库接口技术。主流的关系数据库有ACCESS、SQLServer、Oracle、MySQL等,厂商都为Java提供了专用的JDBC驱动程序。为方便与不同的关系型数据库建立连接,进行相关操作,无需要再为不同的DBMS分别编写程序,JDBC提供了统一的接口,程序员可通过接口连接数据库。JDBC将数据库访问封装在类和接口中,程序员可以方便地对数据库进行增、删、改、查等操作。

Java中专门设计了一个包java.sql,这个包里定义了很多用来实现SQL功能的类,使用这些类编程人员就可以方便地开发出数据库前端应用,辅助Java程序实现数据库功能的配套技术通称为JDBC。第10章数据库编程Java语言程序设计10.1JDBC编程技术概述第10章数据库编程Java语言程序设计10.1JDBC编程技术概述

用JDBC开发数据库应用的原理如图10-1所示,主要实现三方面的功能:建立与数据库的连接,执行SQL声明以及处理SQL执行结果。

(1)使用JDBC-ODBC桥实现JDBC到ODBC的转化,转换后可以使用ODBC的数据库专用驱动程序与某特定的数据库相连。优点使用起来简单,但是因引入了C程序从而失去了Java的跨平台性。

(2)使用JDBC与某数据库系统专用的驱动程序相连,直接联入远端的数据库。优点程序效率高,但是由于使用的专门的驱动程序限制了前端应用与其它数据库系统的配合使用。

(3)使用JDBC与一种通用的数据库协议驱动程序相连,然后利用中间件和协议解释器将这个协议驱动程序与某种具体数据库相连。优点不但可以跨平台,而且可以连接不同的数据库系统,有良好的通用性,不过运行这样的程序需要购买第三方厂商开发的中间件和协议解释器。

提醒:JDK1.8中取消了对JDBC-ODBC的支持,如果要用JDBC-ODBC的方式连接数据库,请装低版本的JDK。第10章数据库编程Java语言程序设计10.1JDBC编程技术概述

在JDBC工作中,供程序员编程调用的接口与类集成在java.sql和javax.sql包中,java.sql包中常用的有类DriverManager类、Connection接口、Statement接口和ResultSet接口。

DriverManager类根据数据库的不同,注册、载入相应的JDBC驱动程序,JDBC驱动程序负责直接连接相应的数据库。

Connection接口负责连接数据库并完成传送数据的任务。

Statement接口由Connection接口产生,负责执行SQL语句,包括增、删、改、查等操作。

ResultSet接口负责保存Statement执行后返回的查询结果。第10章数据库编程Java语言程序设计10.2使用JDBC驱动程序编程

10.2.1JDBC程序模板

JDBCAPI完成3件事,即通过Connection接口建立与数据库连接,Statement接口执行SQL语句,ResultSet接口处理返回结果。使用JDBCAPI编写JDBC程序的工作模板有7个组成部分。

(1)注册JDBC驱动

try{

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//SQLServer驱动程序

//也可为其它DBMS的驱动程序

(2)处理异常

catch(ClassNotFoundExceptione){

System.out.pintln(“无法找到驱动类”);

}

(3)用JDBCURL标识数据库,建立数据库连接

try{

Connectioncon=DriverManager.getConnection(JDBCURL,数据库用户名,密码);

//例如:

Connectioncon=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;

DatabaseName=student","sa","123456");//SQLServer数据库student,用户名sa,密码123456第10章数据库编程Java语言程序设计10.2使用JDBC驱动程序编程(4)发送SQL语句

Statementstmt=con.createStatement();

ResultSetrs=stmt.executeQuery(SQL语句);

(5)处理结果

while(rs.next()){//指向rs记录集第一行

intx=rs.getInt(1);//第1列的整型数据

Strings=rs.getString(2);//第2列的字符串

floatf=rs.getFloat(3);//第3列的float型数据

}

(6)释放资源

con.close();

(7)处理异常

}catch(SQLExceptione){

e.printStackTrac();

}第10章数据库编程Java语言程序设计10.2使用JDBC驱动程序编程

10.2.2使用专用JDBC驱动程序连接数据库

1.下载并安装MicrosoftSQLServer2008JDBCDriver

从Microsoft公司网站下下载,下载sqljdbc_2.0.1803.100_chs.exe,执行该文件进行解压即可得到sqljdbc4.jar文件,该文件包含了使用JDBC专用驱动程序连接数据库的相关类和接口。

下载网址:/zh-cn/download/details.aspx?id=2505

2.配置SQLServer2008JDBCDriver

(1)设置classpath。使用MicrosoftSQLServer2008JDBCDriver驱动程序,将sqljdbc4.jar文件添加到classpath,设置classpath步骤参阅第1章。

(2)在Eclipse中选择菜单“Project”,选择属性“Properties”,如图10-2所示。在弹出的对话框中选择“Libraries”,点击右侧的按钮“AddExternalJARs”,找到sqljdbc4.jar所在目录双击即可。

提醒:选中要连接的源文件,右键单击选择“BuildPath->ConfigureBuildPath”也可弹出此对话框。

图10-2引入外部包界面第10章数据库编程Java语言程序设计10.2使用JDBC驱动程序编程图10-2引入外部包界面第10章数据库编程Java语言程序设计10.2使用JDBC驱动程序编程

3.配置SQLServer2008

为了使用MicrosoftSQLServer2008JDBCDriver访问SQLServer2008数据库,需要进行TCP/IP属性的设置。

(1)启用TCP/IP协议。单击“程序”->“MicrosoftSQLServer2008”->“配置工具”->“SQL配置管理器”,打开“SQLServerConfigurationManmager”对话框,再选择左侧的“SQLServer网络配置”->“MSSQLSERVER的协议”,再双击右侧的“TCP/IP”“如图10-3所示。

第10章数据库编程Java语言程序设计10.2使用JDBC驱动程序编程图10-3TCP/IP设置界面

第10章数据库编程Java语言程序设计10.2使用JDBC驱动程序编程

“TCP/IP”没有启用,单击鼠标右键,选择“启动”选项。

双击“TCP/IP”,进行属性设置,在“IP地址”选项卡中,可以配置“IPALL”中的“TCP”端口,默认为1433。(注意不同DBMS端口号不一样。)

重新启动SQLServer服务。

(2)设置数据库引擎的验证模式。如果要使用SQLServer(sa用户)登录,需要将数据库引擎的验证模式设置为“SQLServer和Windows身份验证模式”,如图10-4所示。(打开SQLServer2008的“MicrosoftSQLServerManagementStudio”窗口,右键单击服务器选择“属性”,在弹出的对话框中选择“安全性”页,即可进行设置。)第10章数据库编程Java语言程序设计10.2使用JDBC驱动程序编程

图10-4设置数据库引擎的验证模式界面

第10章数据库编程Java语言程序设计10.2使用JDBC驱动程序编程图10-5目标sa位置界面第10章数据库编程Java语言程序设计10.2使用JDBC驱动程序编程如图10-6所示sa密码设置界面第10章数据库编程Java语言程序设计10.2使用JDBC驱动程序编程【例10-1】使用JDBC专用驱动程序示例。第10章数据库编程Java语言程序设计10.2使用JDBC驱动程序编程

10.2.3执行SQL语句

1.Statement接口

Statement是Java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。有3种Statement对象,它们都作为在指定连接上执行SQL语句的容器,分别是:

Statement对象,用于执行不带参数的简单SQL语句,提供了执行语句和获取结果的基本方法。

PreparedStatement对象从Statement继承而来,用于执行带或不带IN参数的预编译SQL语句。

CallableStatement对象从PreparedStatement继承而来,用于执行对数据库的存储过程的调用,添加了处理OUT参数的方法。

利用Connection的方法createStatement创建Statement对象的语句如下:

Connectioncon=DriverManager.getConnection(url,,"sa",""); //连接数据库

Statementstmt=con.createStatement();//创建stmt对象

Statement接口提供了三种执行SQL语句的方法:executeQuery、executeUpdate和execute。使用哪一个方法由SQL语句所产生的内容决定。

执行语句的所有方法都将关闭所调用的Statement对象当前打开的结果集。这意味着在重新执行Statement对象之前,需要完成对当前ResultSet对象的处理。Statement对象将由Java垃圾收集程序自动关闭。程序员也应在不需要Statemnet对象时显式地关闭它们,从而释放DBMS资源。第10章数据库编程Java语言程序设计10.2使用JDBC驱动程序编程

2.ResultSet接口

结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成处理结果集的方法很多,我们介绍常用的方法。

next()方法的功能是将指示器下移一行,使下一行变成当前行。在使用ResultSet对象前,必须调用next()方法一次,让它指向第一行。

getXXX()方法指明要提取的列,有两种方式:

对数据的更新等。结果集一般是一个表,其中包含查询所返回的列标题及相应的值。

从当前指定列中提取不同类型的数据。

rs.getInt("ID");//读取ResultSet对象rs当前行中列名为ID的整型值

rs.getString("Name");//读取ResultSet对象rs当前行中列名为Name的字符串值

给出列的索引(列序号),1首列,2代表第2列,依次类推。

Strings=rs.getString(2);//提取当前行第2列数据

提醒:列序号指的是结果集中的列序号,而不是原表中的列序号。

第10章数据库编程Java语言程序设计10.2使用JDBC驱动程序编程

数据库的基本操作主要是增加、删除、修改和查询等,操作对象主要包括数据库、表、记录、字段等,在本章,主要针对数据的增、删、改、查的处理。

10.3.1数据查询

数据查询主要是对数据库表中的数据在一定的条件进行查询显示,主要会用到Statement接口中的一些方法。

Statement接口用于执行不带参数的简单SQL语句。ReparedStatment接口和Callablestament接口都继承了Statement接口。

创建一个Statemnet接口的格式:

Connectioncon=DriverManager.getConnection(URL,"user","password");

Statementsm=con.createStatement();

创建了Statement接口的实例后,可调用其中的方法执行SQL语句,JDBC中提供了3中执行方法,具体见表10-1所示。第10章数据库编程Java语言程序设计10.3数据库的基本操作第10章数据库编程Java语言程序设计10.3数据库的基本操作【例10-2】用JDBC实现查询用户信息。第10章数据库编程Java语言程序设计10.3数据库的基本操作

提醒,运行本程序之前,需要在SQLServer2008数据库中创建“student”数据库,创建“users”的数据表,其中表有两个字段useridchar(10),usepwdchar(20),其值如10-8所示。

10.3.2数据添加、修改和删除

数据的添加、修改和删除主要是对数据库中数据表的内容进行的增、删、改,除了Statemnet接口外,还将用到PreparedStatement接口。

PreparedStatement接口是Statemnet接口的子接口,它直接继承并重载了Statemnet的方法,其有两大特点:

(1)PreparedStatement实例包含已编译的SQL语句,当需要多次执行同一条SQL语句时,利用PreparedStatement传送SQL语句可以大大提高执行效率。

(2)PreparedStatement对象中的SQL语句可具有一个或多个输入参数。输入参数的值在SQL语句创建时未被指定。相反的,该语句为每个IN参数保留一个问号(“?”)作为占位符。每个问号的值必须在该语句执行之前,通过适当的setXXX方法来提供。第10章数据库编程Java语言程序设计10.3数据库的基本操作

1.创建PreparedStatement对象

在建立连接后,调用Connection接口中的方法prepareStatement()创建一个PreparedStatement的对象,其中包含一条带参数的SQL语句,语法格式如下:

PreparedStatementpsm=con.prepareStatement("Insertusers(u_name,u_pass)values(?,?)");

2.输入参数的赋值

PreparedStatement中提供了大量的setXXX方法对输入参数进行赋值。根据参数的SQL类型应选用合适的方法,其中setXXX方法的第一个参数是要设置的参数的序号,第二个参数是设置给该参数的值。例如:

psm.setString(1,"test1");

psm.setString(2,"test2");

常见的还有setInt、setLong、setBoolean、setShort和setByte等。第10章数据库编程Java语言程序设计10.3数据库的基本操作【例10-3】用JDBC实现信息的添加。第10章数据库编程Java语言程序设计10.3数据库的基本操作10.4.1案例情景:用户信息管理。程序功能

温馨提示

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

评论

0/150

提交评论