1、Java语言概述,1,第15讲 数据库操作,西亚斯学院计算机系 姜斌 2006年,Java语言概述,2,主要内容,常用数据库 一、JDBC与ODBC的概念 二、JAVA连接数据库的主要方式 三、数据库连接过程示例 四、数据库简单编程,背景知识:常用数据库,Java语言概述,4,常用数据库,数据库主要有关系型数据库和面对对象数据库;关系性数据库目前占主流地位; 数据库要根据应用开发项目情况选择: 一般用于商业化的有Oracle,SyBase, IBM DB2等等 而为了节省成本,常用于Web网络应用开发的有Access, SQL Server,MySql;,Java语言概述,5,1. SQLSe
2、rver 2000,SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统的最新版本,该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能,具有使用方便、可伸缩性好与相关软件集成程度高等优点;可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服 务器等多种平台使用。 SQL Server 2000共有4个版本,分别是个人版,标准版,企业版和开发版,Java语言概述,6,SQL Server数据库使用(略),1、下载: 2、从机房复制
3、其安装目录熟悉SQLServer数据库的下载和安装。 懂得启动SQLServer数据库。 按步骤创建、删除数据库。 按步骤设置sa用户的密码。,Java语言概述,7,2. MySQL数据库,MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL 数据库的程序,JSP/PHP+MySQL+Linux目前已逐渐成为小型web服务器的一种经典组合,第12章 Java的数据库操作,Java语言概述,8,MySQL,出自瑞典小公司MySQL公司的开放源
4、码的数据库软件,目前对数据库老牌厂商Oracle, IBM, Microsoft 以及 Sybase等公司产生威胁。 最大的优点是免费使用,源代码开放。,Java语言概述,9,MySql的安装(以4.0.2版为例),Mysql的安装包:mysql-4.0.2-alpha-win.zip(需从网上下载) 1、装MySQL并在安装目录mysqlbin中运行mysqladmin.exe程序,启动服务管理界面,创建数据库(hhea)。 2、安装ODBC包 3、将JDBC包放在某特定的目录下,如:c:mysql 主要目录包括bin目录(可执行工具)和data(数据库资源目录),一、JDBC与ODBC的概
5、念,Java语言概述,11,数据库连接技术,目前在市面上最流行的两种数据库接口技术是ODBC和JDBC。 ODBC:Open Database Connectivity开 放数据库连接 JDBC:Java Database Connectivity,Java数据库连接,Java语言概述,12,Microsoft推出的ODBC是最早的连接各种数据库的数据库接口,现在已成为一种事实上的标准。 在Windows和Macintosh平台上可以通过ODBC与各种数据库间进行通信。这些数据库包括:Sybase SQL Server,Microsoft SQL Server,Microsoft Access
6、, Oracle, xBase,DB2等等。 在程序中使用标准的SQL语句便可以访问数据库而不需要使用特定的数据库命令,程序具有良好的可移植性,即不需要作任何修改或只作很少的修改就可以将应用程序从一种移植到另一种。,ODBC技术,Java语言概述,13,JDBC技术,是一种用Java实现的数据库接口技术,是开放数据库ODBC的java实现。对应于Java类库中的java.sql包,这个包定义了很多用于实现SQL功能的类,使用这些类,编程人员可以很方便地开发出数据库前端的应用;辅助Java程序实现数据库功能的配套支持技术通称为JDBC。,二、JAVA连接数据库的主要方式,Java语言概述,15,
7、1、通过JDBCODBC桥结合ODBC对数据库连接 示意图:,Java语言概述,16,2、直接通过JDBC进行数据库连接 示意图:,Java程序,JDBC驱动,Sql Server,Access,xBase,Oracle,三、数据库连接过程示例,(在此只涉及MySql和SQL Server的连接技术),Java语言概述,18,数据库连接过程,1.加载驱动程序加载java应用程序所用的数据库的驱动程序;对于JDBC-ODBC驱动,代码如下:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver ”); 2.建立连接与数据库建立连接的标准方法是调用方法:Driver
8、Manager.getConnection(String url, String user, String password)DriverManager类用于处理驱动程序的调入,而且对新的数据库连接提供支持;其中url时数据库连接字符串,user和password分别时数据库的用户名和密码;此语句返回数据库连接(Connection类)对象; 3。执行SQL语句JDBC提供Statement类来发送给SQL语句,statement类对象由连接对象的createStatement方法创建;返回的结果通常存放在一个ResultSet对象中。,Java语言概述,19,1.MySQL驱动的安装,Mys
9、ql的ODBC安装包:MyODBC-3.51.06.exe(因为WindowsODBC管理器没有直接提供其驱动,所以要下载并安装) Mysql的JDBC安装包:mysql_connector_java-3.0.8-stable-bin.jar (要在path中添加其所在路径),Java语言概述,20,2. MySQL数据库的连接方式配置,应用ODBC技术联接SQLServer数据库。 应用JDBC技术联接SQLServer数据库。,第12章 Java的数据库操作,Java语言概述,21,在管理工具中设置数据源,控制面板管理工具ODBC数据源系统DSN添加例: connection目录MySQL
10、ODBCConnectionDemo.java,Java语言概述,22,JDBC设置,(本书中是在Jbuilder中为项目添加MYSQLJDBC类包) 1.JDK命令:java classpath c:mysqlmysql-connector-java-3.0.8-stable-bin.jar;. Connection.MySQLJDBCConnectionDemo 2.在Jcreator工具选项中设置类包,Java语言概述,23,例:connection目录MySQLJDBCConnectionDemo.java,Java语言概述,24,3. SQL Server数据库的连接方式配置,应用O
11、DBC技术联接SQLServer数据库。 应用JDBC技术联接SQLServer数据库。,Java语言概述,25,准备工作:,1、创建数据库javabaseknowledge 开始SQL Server企业管理器右击“数据库”,新建一数据库javabaseknowledge 2、选择“安全Security”“登录”选项,打开用户管理面板,选择sa用户,右击,选择“属性”,设置密码为test(sa用户原来的默认密码为空),Java语言概述,26,SQL Server的ODBC驱动,Windows平台直接提供,所以无需下载或安装,Java语言概述,27,SQL Server的ODBC连接技术(与my
12、sql的设置差不多),在控制面板管理工具ODBC数据源窗口中,选择System DSN标签建立系统的ODBC数据源,ODBC的名字为javabaseknowledgeSQLServer, 选择数据库,设置日程文件的保存路径.一切完成后,单击Test Data Source按钮进行数据源的测试.测试成功后,单击确定完成SQL Server的javabaseknowledge数据库的ODBC数据源的设置.,Java语言概述,28,然后就可以在JAVA程序中通过JDBC-ODBC桥实现与ODBC数据源的连接,从而实现与数据库的连接.例: connection目录SQLServerODBCConnec
13、tionDemo.java,Java语言概述,29,SQL Server的JDBC驱动,1. 下载: 2. 双击setup.exe安装:安装后的JDBC驱动程序的类包目录D:Program FilesMicrosoft SQL Server 2000 Driver for JDBClib中有以下三个文件:msbase.jar,mssqlserver.jar,msutil.jar 3. 安装后要配置SQL Server的JDBC驱动程序,,Java语言概述,30,SQL Server的JDBC连接技术,要连接成功的注意事项: 1、SQL Server服务器升级到SP3 2、端口1433没有被占用
14、 3、关闭防火墙 4、若出现“未与信任SQL Server连接相关联” 错误的解决方法: 右击SQL Server中(local)WINNT,选属性安全性在身份验证中选SQL Server和Windows 5、在设置选项JDK profiles中添加SQL Server JDBC类包 例connection目录:SQLServerJDBCConnectionDemo.java,四、数据库简单编程,Java语言概述,32,1. 数据表的创建,数据表的创建语法如下。 CREATE TABLE table_name( 字段名字 类型 其它特性, 字段名字 类型 其它特性, ),第12章 Java的数
15、据库操作,Java语言概述,33,数据类型主要有以下:,int float double date-日期类型 datetime日期时间类型 char(m)-固定长度字符串,长度为m varchar(m)-非固定长度字符串,但长度不超过m nvarchar(m)-同上,但为unicode编码(MYSQL中没有此类型) text-备注类型,可以写入大量文本内容,Java语言概述,34,数据表的创建,根据订单数据表的数据字典创建数据表。 create table orderTable(orderId nvarchar(20) not null primary key, supplierName nv
16、archar(50) not null,orderUser nvarchar(50) not null, address nvarchar(100) not null, warehouse nvarchar(20) not null,orderDate datetime not null, stockDate datetime not null,onProcess int default 0),第12章 Java的数据库操作,Java语言概述,35,Create目录中, 1、MySQLJDBC: 例:CreateMySQLOrderTable.java 2、SQLServerJDBC: 例:C
17、reateSQLServerOrderTable.java以上两个JDBC程序要改为ODBC非常容易,只要把驱动程序改为ODBCJDBC桥,和链接地址改为定义好的ODBC数据源即可。,Java语言概述,36,2 Statement接口的应用(CRUD操作),对于数据库表对象的操作,常常是进行记录的查询,插入、更新,和删除操作(简称为CRUD操作) 查询的SQL语法如下: select 字段名from 数据表where 特定条件 增加记录的SQL语法如下: insert into tableName数据表(字段名,.)values(字段值,.),第12章 Java的数据库操作,Java语言概述,
18、37,Statement接口的应用,更改记录的SQL语法如下: update tableName数据表set 字段=字段值,where 特定条件 删除记录的SQL语法如下: delete from tableName数据表where 特定条件 例:statement文件夹中的insert .select.update.delete四个文件,第12章 Java的数据库操作,Java语言概述,38,8.5 Statement接口的应用,应用Statement接口增加记录。 应用Statement接口查询记录。 应用Statement接口更改记录。 应用Statement接口删除记录。 例:stat
19、ement文件夹中的insert .select.update.delete四个文件,第12章 Java的数据库操作,Java语言概述,39,操纵数据库的方法,1.statement接口stmt.executQuery(sql1)用于产生单个结果集的语句,如Select语句;stmt.executeUpdate(sql1)用于执行insert、update或delete语句,以及DDL数据定义语句入create table, drop table 等,返回一个表示受影响行数的整型量。stmt.execute(sql1) /用于更加高级的操作; 2.ResultSet接口(1)更新 rs.upd
20、ateString(),rs.updateInt()(2)取内容 rs.getString(“name”)rs.getTimeStamp(“datetime”) 3.PreparedStatement接口,用以预定义一些可变SQL语句,Java语言概述,40,8.6 ResultSet接口的应用,ResultSet类对象可以使用的方法: first().移到第一条记录 beforeFirst().移到数据集的开头 isFirst(),isBeforeFirst() Last().移到最后一条记录 afterLast().移到数据集的结尾 isLast(),isAfterLast() next(
21、),previous(),下移.上移一条记录 absolute(int row)移到指定数字的记录 relative(int row)移到相对当前位置的某个记录 moveToInsertRow()移到新插入记录,Java语言概述,41,Statement stmt=conn.createStatement(参数) createStatement(int resultSetType,int resultSetConcurrency) 1.ResultSet.TYPE_FORWARD_ONLY, 只能前移(next() ResultSet.TYPE_SCROLL_INSENSITIVE,操作游标,
22、不反映数据的变动 ResultSet.TYPE_SCROLL_SENSITIVE操作游标,反映数据集的变动 2.ResultSet.CONCUR_READ_ONLY 只读 ResultSet.CONCUR_UPDATABLE 可更新,Java语言概述,42,应用ResultSet接口查询记录。 应用ResultSet接口增加记录。 应用ResultSet接口更改记录。 应用ResultSet接口删除记录。 参看ResultSet文件夹下各程序.,第12章 Java的数据库操作,8.7 PreparedStatement,Java语言概述,44,public void setString(int
23、 parameterIndex, String x) public void setInt(int parameterIndex, int x) /带参数的查询SQL语句 如: String parameterSql = “select * from orderTable where orderId = ?“;pstmt.setString(1, “2004070018“);,Java语言概述,45,作业:,1、安装MySQL, MySQLODBC, MySQLJDBC 设置ODBC数据源,设置JDBC类包 2、安装SQLServer的JDBC文件(setup.exe) 设置其ODBC数据源,设置JDBC类包 3、运行书上程序,Java语言概述,46,考试题型,单选题(10道,20分) 填空题(20道,30分) 判断题(10道,20分) 程序题(2道,20分) 编程题(1道,10分),