690 likes | 862 Views
第三部分 Java 语言编程应用篇. 第 8 章 Java 语言的 数据库处理技术. 学习目的. 熟悉 MySQL 和 SQL Server 数据库的安装、配置和基本操作;了解 JDBC 技术的发展、特点及常用驱动程序类型;掌握 Java 应用程序连接到数据库的基本步骤;进一步掌握 Java 数据库应用程序的开发方法;熟练掌握 SQLExplorer 数据库插件的安装配置及基本操作。. 主要内容. 数据库安装与配置 数据库连接 数据库应用系统开发 SQLExplorer 数据库插件技术. 8.1 数据库安装与配置.
E N D
第三部分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的安装程序,下载MySQL安装程序的网址如下所示: http://dev.mysql.com/downloads/index.html 本章所使用的为支持 Windows系列操作系统的MySQL 5.0版本,对应安装程序压缩包的文件名为mysql-5.0.22-win32.zip,安装MySQL数据库具体操作步骤如下。
选择要安装的组件,设置待安装数据库系统的位置选择要安装的组件,设置待安装数据库系统的位置
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驱动程序管理器。 常见数据库加载方式: Class.forName(“comMySQL.jdbc.Driver”); //MySQL Class.forName(“oracle.jdbc,driver.OracleDriver”); //Oracle Class.forName(“com.microsoft.jdbc.sqlserver.SQLServer.SQLServerDriver”); //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对象。
【综合案例8-1】 Java程序在MySQL数据库中创建表student,并向其中输入数据。 • 该程序运行后将在MySQL数据库服务器Test数据库中创建表student, 同时利用程序实现5条记录的录入,程序运行结果如下图所示。
实现代码 首先在Eclipse资源管理窗口中创建项目ConnectMySql,在该目录下创建文件夹Validate,在该目录下创建ConnectToMySqlTest.Java文件,输入源代码。 package validate; import java.sql.*; public class DataBaseTest { public static Connection getConnection() throws SQLException,java.lang.ClassNotFoundException { String url = "jdbc:mysql://localhost:3306/test"; //取得连接的url Class.forName("com.mysql.jdbc.Driver"); //加载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表中的数据如下:"); System.out.println(" 部门编号" + " " + "部门名称" + " " + "部门业绩"); while (result.next()) { int number = result.getInt("bmbh"); //取得数据库中的数据 String name = result.getString("bmmc"); //取得数据库中的数据 String javaScore = result.getString("bmyj"); //取得数据库中的数据 System.out.println(" ------------------------"); System.out.println(" " + number + " " + name + " " + javaScore); } System.out.println(" ------------------------"); sql.close(); con.close(); //关闭声明和连接 }catch (java.lang.ClassNotFoundException 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的语句是: Class.forName("com.mysql.jdbc.Driver"); //加载MySQL的jdbc驱动 • 新建项目后,在写程序前先把MySQL的驱动包导入到工程中去! • 右击项目名称—单击属性—单击java构建路径—单击库—添加外部JAR—选择MySQL的驱动包——确定。
成功加载JDBC驱动程序后,负责管理JDBC驱动程序的类DriverManager会识别加载的驱动程序。成功加载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对象以后,可以用Connection对象的方法创建一个Statement对象的实例。Statement对象可以执行标准的SQL语句,用来完成对数据库插入、删除或修改等操作。 例中创建的实例语句是: Connection con = getConnection(); //取得数据库的连接 Statement sql = con.createStatement(); //创建一个声明,用来执行sql语句
返回的结果及对象ResultSet包含一些用来从结果集中获取数据并保存到Java变量中的方法。利用此方法可以将查询所得的数据保存到变量中,以便以某种格式输出给用户。返回的结果及对象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 java.awt.event.*; 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{ Class.forName("org.gjt.mm.mysql.Driver"); //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驱动程序,地址同前: http://www.mysql.com/download/index.html。 • 采用的驱动程序压缩包是: mysql-connector-Java-3.0.17.zip; 解压到“C:\eclipse\JDBC驱动程序\MySQL”目录下。
将下载驱动程序包加入到Java构建路径中,首先在包资源管理器中右键单击项目“ConnectMySql”,在弹出的菜单中选择"构建路径"的子菜单"配置构建路径",弹出项目“ConnectMySql”的属性设置对话框。接着在弹出的对话框的左边窗口选择“Java构建路径”,在右边出现的“Java构建路径”窗口中点"库"选项卡,如图8-37所示。将下载驱动程序包加入到Java构建路径中,首先在包资源管理器中右键单击项目“ConnectMySql”,在弹出的菜单中选择"构建路径"的子菜单"配置构建路径",弹出项目“ConnectMySql”的属性设置对话框。接着在弹出的对话框的左边窗口选择“Java构建路径”,在右边出现的“Java构建路径”窗口中点"库"选项卡,如图8-37所示。 图8-37 图8-38
点击窗口右边的 “添加外部JAR”按钮,在弹出的JAR文件对话框中找到包文件: mysql-connector-Java-3.0.17-bin.jar此包位于文件夹C:\eclipse\JDBC驱动程序\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:\eclipse\JDBC驱动程序\SQL Server”目录中,包含三个文件: msbase.jar,sql,mssqlserver,.jar,msutil.jar.
将下载驱动程序包加入到Java构建路径中,首先在包资源管理器中右键单击项目“ConnectSqlServer”,在弹出的菜单中选择"构建路径"的子菜单"配置构建路径",弹出项目“ConnectSqlServer”的属性设置对话框。接着在弹出的对话框的左边窗口选择“Java构建路径”,在右边出现的“Java构建路径”窗口中点"库"选项卡,如图8-45所示。将下载驱动程序包加入到Java构建路径中,首先在包资源管理器中右键单击项目“ConnectSqlServer”,在弹出的菜单中选择"构建路径"的子菜单"配置构建路径",弹出项目“ConnectSqlServer”的属性设置对话框。接着在弹出的对话框的左边窗口选择“Java构建路径”,在右边出现的“Java构建路径”窗口中点"库"选项卡,如图8-45所示。 图8-45 图8-46
点击窗口右边的"添加外部JAR"按钮,在弹出的JAR文件对话框中找到包文件,此包位于文件夹”C:\eclipse\JDBC驱动程序\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