《《Java的数据库编程》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《Java的数据库编程》PPT课件.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第11章 Java的数据库编程1主要内容 关系型数据库概述 JDBC简介 JDBC的使用2数据库概念数据库数据的集合,它由一个或多个表组成。每一个表中都存储了对一类对象的数据描述 关系数据库将数据表示为表的集合,通过建立简单表之间的关系来定义结构的一种数据库 3关系型数据库一个关系数据库基本上包括一系列相互关连的表,在每一个表中存有一类与应用系统相关的数据。例如一个学生管理的数据库中,可能有关于学生学号、姓名、住址、电话号码以及系别等方面的表 StudentNoFirstNameLastNameBirthdayGender021010飞张1980-1-1M021111杰刘1981-2-2F41
2、1.1.2 SQL语言SQL(Sequence Query Language,结构化查询语言)是操纵数据库的标准语言。非过程化语言:SQL是一种非过程化语言,它一次处理的是一个记录集合,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作。SQL不要求用户指定对数据的存取方法,SQL语句使用查询优化器,由系统决定对指定数据存取的最快速手段。当关系的设计者在关系表上定义了索引,系统会自动地利用索引进行快速检索,用户不需知道表上是否有索引、表有什么类型的索引等细节。5统一语言:统一语言 SQL可用于所有用户的数据库活动类型,包括数据库系统管理员、程序员等,它操作简单,使
3、用方便。关系数据库的公共语言:用户可将使用SQL的技能从一个RDBMS很容易地转到另一个系统,所有用SQL语言写的程序都具有可移植性。6常用SQL语句(1)创建表CREATE TABLE STUDENT(studentno CHAR(8)NOT NULL,firstname CHAR(10)NOT NULL,lastname CHAR(10)NOT NULL,birthday DATE,gender CHAR(1)DEFAULT M);7常用SQL语句(2)插入数据当一个表新建成时,它里面没有数据,通过向表中插入数据,建成表的实例。语句句法:INSERT INTO 表名(列名1,)VALUES
4、(值1,值2,,值n)子查询;将新学生刘备增加到Student表中,并按照表的结构将信息添加完整,需要如下语句:INSERT INTO STUDENT VALUES(020005,聪,何,1982-2-23,M);8常用SQL语句(3)修改数据对表中已有数据进行修改,语句句法:UPDATE 表名 SET 列名1表达式1,列名2表达式2,WHERE 条件;例如,将学号为021010的名字改为宇飞,应该执行以下语句:UPDATE STUDENT SET firstname=宇文 WHERE StudentNO=021010;9常用SQL语句(4)删除数据 删除表中已经存在的数据,注意:不能删除不存
5、在的数据。语句句法:DELETE FROM 表名 WHERE 条件;例如:对Student表进行删除,要删除其中学号为021111的学生;DELETE FROM STUDENT WHERE Studentno021111;10常用SQL语句(5)查询语句1.查询学号为021900的学生:SELECT*FROM STUDENT WHERE StudentNo=021900;2.查询所有姓名以A开头的学生的姓名;SELECT,FROM STUDENT WHERE LastName LIKE A%;3.将所有学生按学号顺序升序排列;SELECT*FROM STUDENT ORDER BY Stude
6、ntNo DESC;4.将所有学生按学号顺序升序排列;SELECT*FROM STUDENT ORDER BY StudentNo ASC;1111.2 JDBCJDBC(Java DataBase Connectivity)是用于执行SQL语句的Java应用程序接口,由一组用Java语言编写的类与接口组成。JDBC是一种规范,它让各数据库厂商为Java程序员提供标准的数据库访问类和接口,这样就使得独立于DBMS的Java应用程序的开发工具和产品成为可能。1211.3 JDBC的主要接口方法说明acceptURL()返回一个boolen值,说明数据库驱动程序是否可以连接到指定的URLconne
7、ct()建立数据库连接,返回应用程序中所用的Connection对象getMajorVersion()读取数据库驱动程序的主版本号getMinorVersion()读取数据库驱动程序的次版本号getPropertyInfo()利用当前的数据库驱动建立连接时,需要用户提供的基本属性(用户、口令等)jdbcCompliant()返回一个boolean值,说明当前Driver对象是否与JDBC兼容数据库驱动相关的接口定义1、132、方法说明deregisterDriver()从驱动器表中删除某个D river对象getConnection()建立连接getDriver()查找将要连接到URL上的Dr
8、iver对象getDrivers()返回当前管理器中注册的所有Driver对象数组getLoginTimout()返回驱动器等待连接的时间(按秒计算)println()向当前日志流发送指定字符串registerDriver()在管理器中注册Driver对象setLoginTimeout()设置驱动器等待连接的最长时间(按秒计算)setLogStream()设置Driver对象的日志流14数据库连接接口定义方法说明close()断开数据库连接createStatement()创建用于执行SQL语句的Statement对象getCatalog()返回包含当前数据库连接目录的字符串getMetaDa
9、ta()返回用于确定数据库特性的DataBaseMetaData对象getTransactionIsolation()返回与Connection对象相关的事务的当前隔离状态isClosed()判断是否已经断开连接nativeSQL()JDBC驱动器向数据库提交SQL语句,返回该语句prepareStatement()返回执行动态SQL语句的PrepareStatement对象rollback()回滚数据库事务15查询和结果表示接口定义1、方法方法说明说明close()关闭当前的Statement对象execute()执行Statement对象,主要执行返回多个结果集的SQL语句executeQ
10、uery()执行SQL Select命令executerUpdate()执行SQL更新的命令,包括Update,Delete,Insert等getMoreResults()移到Statement对象的下一个结果处getQueryTimeout()返回JDBC驱动器等待Statement执行SQL的延迟时间(秒计算)getResultSet()返回查询结果集162、方法说明close()关闭ResultSet对象getBoolean()将指定列名或列索引的数据作为Boolean类型变量返回getInt()将指定列名或列索引的数据作为Int类型变量返回getString()将指定列名或列索引的数据
11、作为String类型变量返回getDate()将指定列名或列索引的数据作为java.sql.Date类型变量返回getDouble()将指定列名或列索引的数据作为Double类型变量返回getObject()将指定列名或列索引的数据作为Object类型变量返回getMetaData()得到结果集的元数据1711.4 JDBC 的应用JDBC和JDBC/ODBC解决方案18ODBCODBC,是开放式数据库互连(OpenDatabase Connectivity)的缩写 这是一组API。它主要与数据库打交道。就是说,利用ODBC API,你可通过统一界面和各种数据库打交道。通过ODBC访问数据库由
12、四个组成部分:应用程序(Application,你的程序)ODBC 管理器(ODBC manager)ODBC 驱动程序(ODBC Drivers)数据源(Data Sources,数据库)访问数据库的模式你的程序 ODBC管理器 ODBC驱动程序 数据库1911.4.1 ODBC的设置在Windows资源管理器控制面板管理工具ODBC数据源(可能操作系统的不同会有差别)。然后单击用户DSN页。在这里,可以选择一个已经存在的数据源对它进行修改,或者添加一个新的。这里选择添加。20ODBC的设置(2)接下来,系统会提示选择驱动程序,采用Microsoft Access Driver,也可以根据具
13、体的条件选择。21ODBC的设置(3)安装一个ODBC数据源 22ODBC的设置(4)如果新建数据源,就要选择具体数据库的位置。如果在前一步选择已经存在的数据源,则可以在这里对它进行重新选取数据库,修复,压缩等操作。同时还可以通过高级选项来定义用户名,密码等。23ODBC的设置(5)定义新建数据源的名字,对新建数据源进行描述。至此,我们已经完成了用户DSN的设置,在用户DSN里面多了一个名为javadb的数据源。2411.4.2 JDBC的使用1、装载驱动程序装载驱动程序只需要非常简单的一行代码。如果想要使用JDBC/ODBC桥驱动程序,可以用下列代码装载它:);2、建立连接第二步就是用适当的
14、Driver类与DBMS建立一个连接。下列代码是一般的做法:Connection con=DriverManager.getConnection(url,Login,Password);253、查询数据库为了下面的演示,我们使用Microsoft Access编辑刚刚建立的数据源javadb.使用设计向导创建一个名为student的表接着输入一些测试数据。26JDBC示例代码public class JDBCDemo public static void main(String args)String driverClass=;String url=jdbc:odbc:javadb;Strin
15、g columnNames=new Stringstudentno,lastname,firstname,gender,birthday;String displayNames=new String学号,姓,名,性别,生日;try/加载驱动程序Class.forName(driverClass);catch(ClassNotFoundException e)/驱动程序加载不成功,打印错误信息并退出System.out.println(Can not find driver +driverClass);System.exit(-1);Connection con;27JDBC示例代码(2)try
16、/获得jdbc 连接con=DriverManager.getConnection(url);/创建Statement对象Statement stmt=();/得到查询结果集ResultSet rs=stmt.executeQuery(select*from student);/打印表头for(int i=0;i ;i+)System.out.print(displayNamesi+t);();/列印结果集while()for(int i=0;i ;i+)System.out.print(rs.getString(columnNamesi)+t);();stmt.close();28JDBC示
17、例代码(3)catch(SQLException sqe)();finally/关闭数据库连接try con.close();catch(Exception e)29编写JDBC程序一般步骤加载驱动程序加载驱动程序Class.forName(driverClass);获得获得jdbc jdbc 连接连接Connection con=DriverManager.getConnection(url);创建创建StatementStatement对象对象Statement stmt=();得到查询结果集或者执行得到查询结果集或者执行updateupdate等操作等操作ResultSet rs=stm
18、t.executeQuery(select*from student);关闭数据库连接关闭数据库连接try con.close();catch(Exception e)30查询数据库import java.sql.*;class Querypublic static void main(String args)tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundException e)System.out.println(SQLException:+e.getMessage();tryConnection con=
19、DriverManager.getConnection(jdbc:odbc:myDB1,yao,123456);Statement stmt=con.createStatement();ResultSet rs=stmt.executeQuery(select*from employee);while(rs.next()System.out.println(编号:+rs.getString(1)+t+姓名:+rs.getString(2)+t+性别:+rs.getString(3)+t+工资:+rs.getString(4);rs.close();stmt.close();catch(SQLE
20、xception e)System.out.println(SQLException:+e.getMessage();31运行结果32插入记录Connection con=DriverManager.getConnection(jdbc:odbc:myDB1,yao,123456);Statement stmt=();String sqlstr=insert into employee values(6001,张兵,男,2400);stmt.executeUpdate(sqlstr);stmt.executeUpdate(insert into employee values(7001,李红,
21、女,2500);33import java.sql.*;class Insert1public static void main(String args)tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundException e)System.out.println(SQLException:+e.getMessage();tryConnection con=DriverManager.getConnection(jdbc:odbc:myDB1,yao,123456);Statement stmt=con.crea
22、teStatement();String sqlstr=insert into employee values(6001,张兵,男,2400);stmt.executeUpdate(sqlstr);stmt.executeUpdate(insert into employee values(7001,李红,女,2500);stmt.close();con.close();catch(SQLException e)System.out.println(SQLException:+e.getMessage();34修改记录Connection con=DriverManager.getConnec
23、tion(jdbc:odbc:myDB1,yao,123456);Statement stmt=();String sql=update employee set no=3101+where name=张兵;stmt.executeUpdate(sql);sql=update employee set salary=2500 where no=2001;stmt.executeUpdate(sql);35删除记录Connection con=DriverManager.getConnection(jdbc:odbc:myDB1,yao,123456);Statement stmt=();Str
24、ing sql=delete from employee where no=3101;stmt.executeUpdate(sql);();36建立表Connection con=DriverManager.getConnection(jdbc:odbc:myDB1,yao,123456);Statement stmt=();String sql=Create table student(s_num char(4),s_name char(8)null,score int);stmt.executeUpdate(sql);sql=insert into student(s_num,s_name
25、,score)values(9901,张学军,85);stmt.executeUpdate(sql);37删除表Connection con=DriverManager.getConnection(jdbc:odbc:myDB1,yao,123456);Statement stmt=();String sql=drop table student;stmt.executeUpdate(sql);38取表中各列名称Connection con=DriverManager.getConnection(jdbc:odbc:myDB1,yao,123456);Statement stmt=();ResultSet rs=stmt.executeQuery(select*from employee);ResultSetMetaData rsmd=();for(int i=1;i=rsmd.getColumnCount();i+)if(i=1)System.out.print(rsmd.getColumnName(i);elseSystem.out.print(,+rsmd.getColumnName(i);39课后作业 P324.第4、6、8题40
限制150内