资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,69,第三部分 Java语言编程应用篇,第8章 Java语言的数据库处理技术,学习目的,熟悉MySQL和SQL Server数据库的安装、配置和基本操作;了解JDBC技术的发展、特点及常用驱动程序类型;掌握Java应用程序连接到数据库的基本步骤;进一步掌握Java数据库应用程序的开发方法;熟练掌握,SQLExplorer,数据库插件的安装配置及基本操作。,主要内容,数据库安装与配置,数据库连接,数据库应用系统开发,SQLExplorer数据库插件技术,8.1数据库安装与配置,常用数据库,MySQL和SQL Server 2000,的特点和性能,数据库在,Windows,操作系统环境下的安装及配置,为,Java,程序的数据库处理搭建了数据环境。,知识学习要求掌握为:,熟练掌握,Windows,环境下MySql数据库和,SQL Server 2000,数据库的安装及配置。,8.1.1,MySQL,数据库简介及安装配置,MySQL数据库是一个多线程的,结构化查询语言(SQL)数据库服务器。,MySQL是一个完全免费的数据库。,MySQL数据库可以自由用于个人或商业用途。,MySQL 的执行性能非常高,运行速度非常快,并且非常容易使用。,MySQL是客户机和服务器模式的分布式系统,由SQL 服务器、客户端、管理工具和应用程序等一整套工具组成。目前最新版本可以作为复杂情况以及大负荷数据库解决方案的平台。,可以在MySQL的官方网站免费下载不同版本的MySQL的安装程序,下载MySQL安装程序的网址如下所示:,本章所使用的为支持 Windows系列操作系统的MySQL 5.0版本,对应安装程序压缩包的文件名为,安装MySQL数据库具体操作步骤如下。,MySQL数据库安装,MySQL数据库系统的安装,安装类型Setup Type选择,选择要安装的组件,设置待安装数据库系统的位置,新建用户账户以及进行注册,MySQL数据库配置,进入配置对应的数据库服务器状态,服务器实例配置,选择服务器类型的配置方式,确认数据库对应文件的安装位置,设置对应的网络传输协议,选择对应的字符集,安全性设置,完成安装,进入配置对应的数据库服务器状态,服务器实例配置,选择服务器类型的配置方式,确认数据库对应文件的安装位置,设置对应的网络传输协议,默认端口号3306,选择对应的字符集,安全性设置,完成安装,8.1.2 SQL SERVER 2000数据库简介及安装,SQL Server 2000是一个功能完整全面的数据库产品。,SQL Server 2000全面支持Web功能的数据库解决方案。,SQL Server2000还在可伸缩性与可靠性方面保持着多项测试纪录。,无论以应用程序开发速度还是以事务处理运行速度来衡量,SQL Server 2000都堪称最为快捷的数据库系统。,课后将以,Windows 2003,Server操作系统为例,练习企业版,SQL Server,2000的安装过程。,8.2 数据库连接,主要介绍JDBC技术的诞生、特点及常用驱动程序类型。以实际案例为基础,详细介绍Java应用程序访问数据库的一般步骤。,知识重点为:,掌握Java应用程序利用JDBC技术连接数据库一般步骤。,熟练掌握Java应用程序连接到各种数据库的配置。,8.2.1 JDBC诞生背景,自从Java语言于1995年5月正式公布以来,Java风靡全球。出现大量的用Java语言编写的程序,其中也包括数据库应用程序。,由于没有一个Java语言的API,编程人员不得不在Java程序中加入C语言的ODBC函数调用。,这就使很多Java的优秀特性无法充分发挥,比如平台无关性、面向对象特性等。,随着越来越多的编程人员对Java语言的日益喜爱,越来越多的公司在Java程序开发上投入的精力日益增加,对Java语言接口的访问数据库的API的要求越来越强烈。也由于ODBC的有其不足之处,比如它并不容易使用,没有面向对象的特性等等,SUN公司决定开发以Java语言为接口的数据库应用程序开发接口。,在JDK1.X版本中,JDBC只是一个可选部件,到了JDK1.1公布时,SQL类包(也就是JDBC API)就成为Java语言的标准部件。,8.2.2 JDBC技术概述,JDBC(Java DataBase Connectivity)称为Java数据库连接。,JDBC是一种可用于执行SQL语句的Java API(Application Programming Interface,应用程序接口)。它由一些Java语言写的类、界面组成。,8.2.3 JDBC驱动程序的类型,JDBC的数据库访问要通过JDBC驱动程序来完成,JDBC驱动程序在Java应用程序与物理数据库之间架起了一座桥梁。,JDBC驱动分为以下几种类型:,JDBC-ODBC桥接驱动程序,JDBC-原始数据库API驱动程序,JDBC-中间层驱动程序,纯JDBC驱动程序,8.2.4 数据库连接,在开发Java的各种应用程序中,经常要访问数据库,对数据库中的表进行各种各样的操作,以满足用户的需求,我们将根据案例阐述在Eclipse中开发Java应用程序连接数据库的一般步骤。,使用JDBC连接数据的,5,个步骤,1,加载JDBC驱动程序。,使用Class.forName方法中指定数据库驱动程序的,类名,这样自动创建了驱动程序的实例,并注册到,了JDBC驱动程序管理器。,常见数据库加载方式:,”);/MySQL,Class.forName(“oracle.jdbc,driver.OracleDriver”); /Oracle,”);/SQLServer,使用JDBC连接数据的5个步骤,2,建立连接,定义连接URL和建立连接。,成功加载JDBC驱动程序之后,必须指定服务器的位置、指向数据库的URL和使用协议,并加入服务器主机名、端口号和数据库名。每个数据驱动程序的文档中,都会提供精确的定义。,常用写法如下:,String ur1=“jdbc:MySQL:/localhost/myDataBase”;,String user=“root”;,String password=“111111”;,Connection con=DriverManager.getConnection(ur1,user,password);,使用JDBC连接数据的5个步骤,3,创建对象,创建Statement对象,它是用来向数据库发送查询和命令。它由,Connection,的createStaement方法创建的。,创建对象代码如下:,Statement statement=connection.createStatement();,创建好对象后,就可以进行数据库操作了。,常用方法:,executeQuer查询并在ResultSet中返回数据。,excuteUpdate执行Update/Insert/Delete命令。,使用JDBC连接数据的5个步骤,4, 5,结果处理,处理结果最简单方式是使用ResultSet的next方法在表中移动,每次移动一行。,关闭连接,关闭数据库连接。,con.close();,关闭连接同时,还自动关闭对应的Statement 和ResultSet对象。,该程序运行后将在MySQL数据库服务器Test数据库中创建表student, 同时利用程序实现5条记录的录入,程序运行结果如下图所示。,【,综合案例8-1,】,Java程序在MySQL数据库中创建表student,并向其中输入数据。,实现代码,首先在Eclipse资源管理窗口中创建项目ConnectMySql,在该目录下创建文件夹Validate,在该目录下创建ConnectToMySqlTest.Java文件,输入源代码。,package validate;,import java.sql.*;,public class DataBaseTest ,public static Connection getConnection() throws,String url = jdbc:mysql:/localhost:3306/test; /取得连接的url,); /加载MySQL的jdbc驱动,String userName = root; /使用能访问MySQL数据库的用户名root,String password = mysql; /使用口令,Connection con = DriverManager.getConnection(url, userName, password);,/打开数据库连接,return con;,8-1-1,public static void main(String args) ,try, Connection,con,= getConnection(); /取得数据库的连接,Statement,sql,= con.createStatement(); /创建一个声明,用来执行sql语句,sql.executeUpdate(drop table if exists Goods,);,/如存在同名数据库则删除,sql.executeUpdate(create table goods(bmbh int not null auto_increment,bmmc varchar(30) not null default bmmc,bmyj int not null default 60,primary key (bmbh);); /向表中插入数据,sql.executeUpdate(insert goods values(1001,服装一部,842511);,sql.executeUpdate(insert goods values(1002,服装二部,796519);,sql.executeUpdate(insert goods values(1003,电器一部,328923);,sql.executeUpdate(insert goods values(1004,电器二部,977666);,sql.executeUpdate(insert goods values(1005,日用品部,765348);,String query = select * from Goods; /执行查询数据库的sql语句,ResultSet,result,= sql.executeQuery(query); /返回一个结果集,8-1-2,System.out.println(Goods表中的数据如下:);,( 部门编号 + + 部门名称 + + 部门业绩);,while (,result.next(),) ,int number = result.getInt(bmbh); /取得数据库中的数据,String name = result.getString(bmmc); /取得数据库中的数据,String javaScore = result.getString(bmyj); /取得数据库中的数据,( -);,( + number + + name + + javaScore);,( -);,sql.close();con.close(); /关闭声明和连接,catch ( e) /异常处理,System.err.print(ClassNotFoundException: );,System.err.println(e.getMessage(); ,catch (SQLException ex) ,System.err.println(SQLException: + ex.getMessage();,/显示数据库连接错误或者查询错误,8-1-3,数据库连接,JDBC技术连接到各类数据库一般有,5个步骤:,首先要在应用程序中加载JDBC驱动程序。通常使用Class.forName()方法加载,需要注意的一点就是要设好类路径classpath,确保JDBC驱动在类路径中。不同的数据库加载驱动程序的方法不尽相同。,例中加载的MySql的语句是:,);,/加载MySQL的jdbc驱动,新建项目后,在写程序前先把,MySQL,的驱动包导入到工程中去!,右击项目名称,单击属性,单击,java,构建路径,单击库,添加外部,JAR,选择,MySQL,的驱动包,确定。,成功加载JDBC驱动程序后,负责管理JDBC驱动程序的类DriverManager会识别加载的驱动程序。,用DriverManager的方法getConnection()来创建一个数据库连接类的实例。该方法以一个数据库的String类型的URL为参数,返回一个连接数据库的接口类Connection。,例中创建的实例语句是:,String url = jdbc:mysql:/localhost:3306/test;,/取得连接的url,String userName = root;,/使用能访问MySQL数据库的用户名root,String password = mysql;,/使用口令,Connection con = DriverManager.getConnection(url, userName, password);,/打开数据库连接,获取Connection对象以后,可以用Connection对象的方法创建一个Statement对象的实例。Statement对象可以执行标准的SQL语句,用来完成对数据库插入、删除或修改等操作。,例中创建的实例语句是:,Connection con = getConnection();,/取得数据库的连接,Statement sql = con.createStatement();,/创建一个声明,用来执行sql语句,返回的结果及对象ResultSet包含一些用来从结果集中获取数据并保存到Java变量中的方法。利用此方法可以将查询所得的数据保存到变量中,以便以某种格式输出给用户。,String query = select * from student;,/执行查询数据库的sql语句,ResultSet result = sql.executeQuery(query);,/返回一个结果集,使用与数据库相关的对象非常耗内存,因此在数据库访问后要关闭与数据库的连接,同时还应该关闭Statement对象。两个对象可以分别使用关闭连接的方法close。,sql.close();/关闭声明,con.close();/关闭连接,8.3 数据库应用系统开发,8.3.1 基于MySQL数据库应用系统的开发,知识学习要求掌握为:,本节将通过一个简单的应用案例说明在Eclipse中开发连接MySQL数据库的应用程序基本步骤;掌握Eclipse中应用程序构建路径的配置及应用程序数据环境的配置。,【综合案例8-2】Java应用程序连接MySQL数据库进行用户身份验证,【综合案例8-2】,Java应用程序连接MySQL数据库进行用户身份验证,运行后出现如图1所示的“用户身份验证”窗口;,输入信息后单击“登录”按钮,程序将开始连接数据库,并执行身份验证业务逻辑。,身份验证通过后将弹出如图2对话框,提示登陆成功,否则弹出如图3所示,说明非法登陆。单击退出按钮,将退出用户身份验证窗口。,图1,图2,图3,实现代码,首先在Eclipse中建立一个名为“ConnectMySql”的新项目,在项目里创建一个名为UserLogin的类,向类中加入如下代码。,package validate;,import java.awt.*;,import .*;,import java.sql.*;,import javax.swing.*;,public class UserLogin extends JFrame implements ActionListener,JPanel panel1 = new JPanel();,JLabel label = new JLabel(请输入用户名:);,JLabel labe3 = new JLabel();,JTextField userName = new JTextField(); /输入用户名的文本框,JLabel labe2 = new JLabel(请输入密码:);,JPasswordField userPassword = new JPasswordField();,/输入密码的密码框,JButton button1 = new JButton(登录);,JButton button2 = new JButton(退出);,8-2-1,public UserLogin (),super(用户身份验证); /调用父类构造方法,button1.addActionListener(this); /为button1注册事件监听器,this.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER);,/定义程序窗口布局,panel1.setLayout(new GridLayout(5,1,4,4);/定义面板布局,this.getContentPane();add(panel1);,panel1.add(label); panel1.add(userName);,panel1.add(labe2); panel1.add(userPassword);,panel1.add(button1);panel1.add(button2);,panel1.add(labe3);,button2.addActionListener(new ActionListener(),public void actionPerformed(ActionEvent e) dispose() ; ); / button2为定义事件监听对象,this.addWindowListener(new WindowAdapter(), public void windowClosing(WindowEvent e) System.exit(0); );,setSize(300,150);,setVisible(true);,8-2-2,public void actionPerformed(ActionEvent e) ,try,);,/MySQL数据库驱动程序加载,String strCon = jdbc:mysql:/localhost/test;,Connection conn=DriverManager.getConnection(strCon,root,mysql);,Statement stmt=conn.createStatement(); /执行查询数据库的SQL语句,String,sql,= select * from account where username= + userName.getText() + ;,sql,+= and userPassword= + userPassword.getText() + ;,/SQL查询语句,ResultSet,rs,=stmt.executeQuery( sql );/返回一个结果集,if(,rs.next(),),labe3.setText(欢迎您登陆本系统); /身份验证通过,else,labe3.setText(非法用户); /身份验证没有通过,catch(final Exception ex) ex.printStackTrace(); ,public static void main(final String args) new UserLogin(); ,8-2-3,配置构建路径,案例中由于要访问MySQL数据库,需要JDBC驱动程序。,下载免费MySQL数据库的JDBC驱动程序,地址同前:,。,采用的驱动程序压缩包是:,;,解压到,“C:eclipseJDBC驱动程序MySQL”目录下。,图8-37 图8-38,将下载驱动程序包加入到Java构建路径中,首先在包资源管理器中右键单击项目“ConnectMySql”,在弹出的菜单中选择构建路径的子菜单配置构建路径,弹出项目“ConnectMySql”的属性设置对话框。接着在弹出的对话框的左边窗口选择“Java构建路径”,在右边出现的“Java构建路径”窗口中点库选项卡,如图8-37所示。,点击窗口右边的 “添加外部JAR”按钮,在弹出的JAR文件对话框中找到包文件:,此包位于文件夹,C:eclipseJDBC驱动程序MySQL中,,如图8-38。,选中驱动程序包后,点击“打开”按钮,这样JDBC驱动就添加到Java构建路径中了,如图8-39所示。最后点击属性设置对话框下方的“确定”按钮关闭对话框。,图8-39,应用程序数据环境的配置,最后在MySQL数据库中创建程序需要访问的数据源test,并在其中创建数据表validate,具体实现方法如下:,依次打开开始菜单 所有程序 MySQL MySQL Server 5.0 MySQL Command Line Client,弹出如下命令行窗口。,8.3.2 基于,SQL Server,数据库系统的开发,知识学习要求掌握为:,掌握Eclipse中Java应用程序连接到SQL Server数据库的基本步骤;掌握数据库应用程序开发的一般过程,熟悉Eclipse中构建路径的配置以及应用程序数据环境的配置。,【综合案例8-3】,超市管理信息系统中Java程序连接SQL Server数据库实现产品信息录入。,该程序借助于Java API中提供的图形用户界面开发工具实现身份验证的桌面应用程序,在产品订购录入窗口输入产品信息,单击确定,即录入信息到产品库中,程序执行界面效果如下。,配置构建路径,案例中由于要访问MySQL数据库,需要JDBC驱动程序。,下载SQL Server数据库的JDBC驱动。,将下载的驱动程序压缩包解压缩到”C:eclipseJDBC驱动程序SQL Server”目录中,包含三个文件: msbase.jar,sql,mssqlserver,.jar,msutil.jar.,图8-45 图8-46,将下载驱动程序包加入到Java构建路径中,首先在包资源管理器中右键单击项目“ConnectSqlServer”,在弹出的菜单中选择构建路径的子菜单配置构建路径,弹出项目“ConnectSqlServer”的属性设置对话框。接着在弹出的对话框的左边窗口选择“Java构建路径”,在右边出现的“Java构建路径”窗口中点库选项卡,如图8-45所示。,点击窗口右边的添加外部JAR按钮,在弹出的JAR文件对话框中找到包文件,此包位于文件夹”C:eclipseJDBC驱动程序SQL Server”中,如图8-46所示。,选中驱动程序包后,点击打开按钮,这样JDBC驱动就添加到Java构建路径中了,如图8-47所示。最后点击属性设置对话框下方的确定按钮关闭对话框。,图8-47 图8-48,应用程序数据环境的配置,要使程序正常运行,还需要在Microsoft SQL Server中创建数据表,依次单击开始菜单 程序 Microsoft SQL Server 企业管理器,打开SQL Server Enterprise Manager窗口如图8-48所示。,在master数据库中创建表Buyer_table,表结构如图8-49所示。,图8-49 图8-50,8.4 SQLExplorer数据库插件技术,SQLExplorer是Eclipse集成开发环境的一种数据库管理插件,它用于从Eclipse连接到一个数据库。这个数据库插件将数据库的基本操作集成到Eclipse开发环境中,并且用图形化操作界面代替了原始数据库系统枯燥的命令交互方式,便于用户实现对数据的管理。,知识学习要求掌握为:,应熟练掌握利用SQLExplorer创建数据表、显示表结构、查看表中数据,以及添加、更新、插入或删除数据表数据等基本操作。,插件的下载与安装,SQLExplorer的免费下载地址是 :, Explorer,选项中,connections,,单击确定按钮。,为了配置MySQL驱动,在MySQL Connect选项上单击鼠标右键,在弹出的快捷菜单中选择New connect Profile命令,可以打开如图所示的Create New Connect Profile 对话框。,常用数据库的驱动类、连接URL和驱动.jar 文件,数据库,系统,Driver Class,URL,库文件,IBM DB2,COM.ibm.db2.jdbc.app.DB2Driver,Jdbc:db2:,db2Java.zip,Sybase,Com.sybase.jdbc2.jdbc.SybDriver,Jdbc:Sybase:Tds:/,Jconn2.jar,Oracle,Oracle.jdbc.driver.OracledDiver,Jdbc:oracle:thin:,Classes12.zip,SQLServer,Com.microsoft.jdbc.sqlserver.SQLServerDriver,Jdbc:Microsoft:sqlserver:/localhost:1433,Mssqlserver.jar,msbase.jar,msutil.jar,表8-1,8.4.2 SQLExplorer基本操作,SQL Explorer插件提供对图形化界面操作工具,通过该插件可以方便地实现对数据库的操作,给那些不习惯使用命令行的用户带来了极大的方便。,【综合案例8-4】,在Eclipse中利用插件SQLExplorer对MySQL数据库Test中表score进行如下操作:,查看数据库表score结构,;,获得创建表score的SQL脚本;,查看数据库表score内容;,更新数据库表score中内容;,向数据表score插入记录:学号,2006151106;姓名,马莹;成绩,89;,删除数据表score中姓名为李华的记录内容,。,首先在Eclipse的SQLExplorer视窗中选择Database Structure View选项卡。为了显示表score 的结构,在Database Structure View中依次选择Database、EmployeeDB、tablescore选项。如图8-57所示的表score的结构。,查看数据库结构,获得SQL脚本,要想得到创建表格的SQL,在表结点单击鼠标右键,并且在弹出的快捷菜单中选择Create table script 命令,将生成创建被选表格的SQL脚本,并将其显示在SQLExplorer视窗的SQL Editor中,创建的Sql脚本如下所示。,CREATE TABLE score (,StudentID int(11) NOT NULL,StudentName varchar(20) NOT NULL default ,JAVAGrade int(11) NOT NULL default 60,PRIMARY KEY (StudentID),) ENGINE=InnoDB DEFAULT CHARSET=utf8;,查询数据表记录,要想显示默认的Select查询语句,在表结点单击鼠标右键,并且在弹的快捷菜单中选择Generate Select in Sql Editor命令。系统将在SQL Editor中显示从表score中提取数据的默认查询语句,Sql脚本如下所示。,SELECT StudentID, StudentName, JAVAGrade FROM test.score,单击Execute SQL脚本。由修改后的Select语句得到的数据显示在SQL Results 选项卡中,如图所示。,更新数据表记录,在SQL Editor 中输入update语句以更新数据表中指定的记录,例如,执行下列SQL语句:,UPDATE test.score SET StudentName=“王盟” WHERE,StudentName=“黄萌”,即可修改表中score原记录姓名为黄萌更新为王盟。如图所示。,向数据表中插入记录,在SQL Editor 中输入insert语句将会数据表中插入指定记录,例如,执行下列SQL语句:,INSERT INTO test.score VALUES(“2006151106”,“马莹”,89),即可表score中增加马莹的学生记录。结果如图所示。,删除数据表中记录,在SQL Editor 中使用Delete语句将会删除指定记录,例如,执行下列SQL语句:,DELETE FROM test.score WHERE studentname=“李华”,即可删除score表中姓名为李华同学的记录。结果如图所示。,8.5 小结,1,数据库安装与配置,MySQL数据库安装,SQL SERVER 2000数据库安装,数据库连接,MySQL数据库配置,SQL SERVER 2000数据库配置,数据库连接,JDBC,(Java DataBase Connectivity),JDBC连接数据的,5,个步骤,8.5 小结,2,数据库应用系统开发,基于MySQL数据库应用系统的开发,基于SQL SERVER 数据库应用系统开发,SQLExplorer数据库插件技术,SQLExplorer插件的下载与安装,SQLExplorer基本操作,习题,一、简答题,1,2,3,二、编程题,
展开阅读全文