Java语言课件:第5章 Java数据库编程_第1页
Java语言课件:第5章 Java数据库编程_第2页
Java语言课件:第5章 Java数据库编程_第3页
Java语言课件:第5章 Java数据库编程_第4页
Java语言课件:第5章 Java数据库编程_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、第5章 Java数据库编程主要内容: 5.1. 数据库编程基础5.2. JDBC5.3. 数据库编程15.1. 数据库编程基础1. 数据库(Database,简称DB)是在计算机系统中按照一定的数据结构(模型)组织、存储在计算机存储器中的相互联系的数据集合。数据库可以供多种用户共享,具有较小的冗余度和较高的数据独立性。2. 数据库管理系统(Database Management System, 简称DBMS)是位于用户与操作系统之间的一层数据管理软件,是数据库系统的重要组成部分,对数据库的所有操作和控制都是通过它来进行的。2关系数据库模型把数据用表的集合来表示.数据表由一个或多个相关的数据项组

2、成表视 图. 订单 客户 产品 记 录关系数据库模型5.1. 数据库编程基础31. 数据库的概念关系数据库可以由多个表组成,表与表之间可以用不同的方式相互关联.例如: 学生表: 成绩表:703892951成绩学号刘三3李二2张一1姓名学号刘三703姓名成绩学号关系数据库模型5.1. 数据库编程基础41. 数据库的概念表、记录、行列关系:课程编号课程名称学时学期平均成绩A001Java编程基础32179A003C语言48185B004信号与系统32267C001通信原理32266属性行(记录)列关系数据库模型5.1. 数据库编程基础5结构化查询语言(SQL)SQL是结构化查询语言(Structu

3、red Query Language)的简称。SQL语言是IBM公司在20世纪70年代所开发的一种数据库操作语言。它是一个综合的、功能强大的关系型数据库语言,能实现数据库的创建、更新、删除、数据定义、文本限制、出现控制等操作,被公认为是数据库操作不可缺少的工具。SQL现在已经成为关系数据库的标准语言。美国国家标准协会(ANSI)和国际标准化组织(ISO)制定了一系列的SQL标准。5.1. 数据库编程基础6SELECT语句数据查询是数据库的常用、核心的操作。SQL语言提供了SELECT语句进行数据库查询。SELECT语句例子: Select 学号,姓名,成绩 From 学生表,成绩表 Where

4、 成绩60结构化查询语言(SQL)5.1. 数据库编程基础7更新记录INSERTInsert语句用于向数据库的某个表中插入新的记录.INSERT语句例子: Insert into 学生表(学号,姓名) Values(041201,张三)结构化查询语言(SQL)5.1. 数据库编程基础8更新记录UPDATEUPDATE语句用于数据修改。UPDATE语句示例: update 成绩表 set 成绩=80 where 学号=041201结构化查询语言(SQL)5.1. 数据库编程基础9更新记录DELETEDELETE语句进行数据删除。DELETE语句示例: DELETE FROM 学生表 WHERE

5、姓名=张三 结构化查询语言(SQL)5.1. 数据库编程基础105.2. JDBCJDBC是个商标名而不是缩写。但经常被认为是Java Database Connectivity的缩写。即Java数据库连接API。JDBC是由一组用Java语言编写的类和接口组成。JDBC为开发人员提供了一个标准的API,允许用户从Java应用程序中访问任何表格数据源。JDBC支持SQL工业标准.JDBC有两个重要的组件:驱动程序管理器和JDBC-ODBC桥.11JDBC技术简介驱动程序管理器: JAVA应用程序平台与数据库无关性是通过驱动程序管理器实现的.在开发过程中需要为不同的数据库使用不同的JDBC驱动程

6、序,这些驱动程序的选择由驱动程序管理器完成.JDBC-ODBC桥 Microsoft提供了一个ODBC(开放式数据库互连)的技术,使windows应用程序能访问不同的数据库.Java程序不能直接与ODBC驱动器通信.SUN公司提供了由JDBC访问ODBC数据源的驱动器JDBC-ODBC桥接器.5.2. JDBC12JDBC API为Java开发者使用数据库提供了统一的编程接口。即JDBC建立了一种不依赖具体DBMS编程的机制,使开发人员不必考虑所用的具体数据库,就能编写出客户端/服务器数据库应用程序.JDBC 30版本 :java.sqljavax.sql5.2. JDBCJDBC技术简介13

7、java.sql 这个包中的类和接口主要针对基本的数据库编程服务,如生成连接、执行语句以及准备语句和运行批处理查询等。同时也有一些高级的处理,比如批处理更新、事务隔离和可滚动结果集等。javax.sql 它主要为数据库方面的高级操作提供了接口和类。如为连接管理、分布式事务和旧有的连接提供了更好的抽象,它引入了容器管理的连接池、分布式事务和行集等。 5.2. JDBCJDBC 30版本 :14JDBC能够提供以下功能 1)与数据库建立连接 2)向数据库发送SQL语句 3)处理数据库返回的结果5.2. JDBCJDBC技术简介151)与数据库建立连接在JAVA应用程序中要对数据库中的数据进行操作,

8、首先就要与数据库进行连接.与数据库连接一般分为两个步骤:1.装入驱动器:所有的与数据库交互操作都是借助于DBMS特定的驱动器而发生的.所以,进行数据处理之前,需要确定DBMS厂商提供的驱动器并装入它.2.连接到数据库:在装入DBMS特定驱动器后,就可以连接需要操作的数据库.5.2. JDBC16装入数据库驱动程序为了建立与数据库的连接,需要调用Class类的forName()方法来装入数据库特定的驱动器.如果用JDBC-ODBC桥接器来与数据库通信,则用语句: Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”)如果用JDBC Driver(JDBC驱动器

9、)与数据库通信,则根据不同的数据库使用下面的语句: 装载MS SQL Server驱动 Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”) 装载Oracle JDBC驱动 Class.forName(oracle.jdbc.driver.OracleDriver)5.2. JDBC17 在装入JDBC驱动器时可能发生异常,因此要捕获这个异常try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException e) System.out.

10、println(Driver not found);5.2. JDBC装入数据库驱动程序18连接到数据库用 DriverManager(驱动程序管理器)类中的getConnection方法建立与数据库的连接. 例如: Connection conn = DriverManager.getConnection(“jdbc:odbc:数据源名”,”数据源访问用户名”,”数据源访问密码”); conn是Connection类的对象,代表了与数据库的连接.在应用程序中可以使用多个Connection对象与一个或多个数据库连接.5.2. JDBC19DriverManager获得数据库连接 Driver

11、Manager.getConnection(parameter ) 重载方法:static Connection getConnection(String url) static Connection getConnection(String url,Properties info) static Connection getConnection(String url,String user,String password) 5.2. JDBC20DriverManagerURL的语法如下:jdbc: 协议 jdbc子协议 子名 数据库名 驱动程序URLJDBC-ODBCsun.jdbc.od

12、bc.JdbcOdbcDriverjdbc:odbc:odbcsourceOracle thin Driveroracle.jdbc.driver.OracleDriverjdbc:oracle:thin:ip:port:sidMySQLorg.gjt.mm.mysql.Driverjdbc:mysql:/ip/database5.2. JDBC212)向数据库发送SQL语句要将应用程序对数据库操作的SQL语句发送给DBMS,要执行如下两步操作: 1) 首先使用已经建立好的Connection对象的createStatement()方法创建一个Statement对象. Statement st

13、mt = conn.createStatement(); 2) 然后定义一个变量存放要发送的SQL语句。如:String strS = “select * from student”; String strI = “Insert into 学生表(学号,姓名) Values(041201,张三)”;如果是一般的SELECT查询语句要发送,则使用executeQuery(strS)方法。 如果是insert、update或delete修改语句,则使用executeUpdate(strI)方法。5.2. JDBC223)处理数据库返回的结果利用Statement对象的executQuery()方法

14、发送的SQL查询语句,会返回一个ResultSet对象,存放结果集。ResultSet对象包含了访问结果集中数据的很多方法。典型的有:getString(int n)getInt(int n)getFloat(int n)getDate(int n)next() 等.5.2. JDBC23ResultSet对象常用方法next()方法: 把当前的指针向下移动一位。最初它位于第一行之前,因此第一次调用next将把指针置于第一行上,使它成为当前行。随着每次调用next导致指针向下移动,按照从上至下的次序 获取ResultSet行。5.2. JDBC24ResultSet结果集的取得ResultSe

15、t的使用 . . . ResultSet rst = stmt.executeQuery(Select * from User_Info);while (rst.next() System.out.println(rst.getString(userName);System.out.println(rst.getDate(regDate);System.out.println(rst.getString(4);System.out.println(rst.getInt(age); . . .5.2. JDBC255.3. 数据库编程在Java程序中要操作数据库,一般应该通过如下几步:1)导入与

16、数据库相关的类 import java.sql.*;2)加载数据库驱动程序 Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);3)建立数据库连接 Connection conn = DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433; DatabaseName=db_library;“,”sa”,”); 4)创建Statement对象 Statement stmt = conn.createStatement(); 26Java程序中要操作

17、数据库步骤:5)执行查询语句 ResultSet rs = stmt.executeQuery(SELECT id,name FROM student); 6)取值 while (rs.next() .7)关闭Stamtement stmt.close();8)关闭连接conn.close(); 见p195例子5.3. 数据库编程27数据库举例import java.sql.*;public class DBDemo public static void main(String args) String strurl =jdbc:odbc:stu; Connection conn =null;

18、 Statement stmt =null; ResultSet rs=null; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); conn=DriverManager.getConnection(strurl,null,null); stmt=conn.createStatement(); rs=stmt.executeQuery(select 姓名,年龄 from 学生); 5.3. 数据库编程28 while (rs.next() System.out.println(学号:+rs.getString(1)+ 年龄:+rs.getInt(

19、2); catch (ClassNotFoundException e) e.printStackTrace(); catch(SQLException e) e.printStackTrace(); finally try if(stmt !=null) stmt.close(); if(conn !=null& !conn.isClosed() conn.close(); catch(SQLException e) e.printStackTrace(); 5.3. 数据库编程数据库举例29处理带参数的查询在很多应用中,要查询的内容或更新的内容是运行时由用户输入来确定的.此时,在编写应用程

20、序时,就不能确定SQL语句中有些项的值.像这样的查询,Java提供了一个PreparedStatement对象来处理。PreparedStatement对象允许执行带参数的查询,如:select * from student where 学号=?用Connection对象的PreparedStatement()方法来创建PreparedStatement对象。5.3. 数据库编程30方法如下:String url=“jdbc:odbc:MydataSource”;Connection conn=DriverManager.getConnection(“url”,”la”,”1234”);Pre

21、paredStatement stat;String s=“select * from student where 学号=?”;stat=conn.prepareStatement(s);在执行PreparedStaatement 对象之前,必须设置每个?参数的值。可以通过调用PreparedStatement对象的setXxx()方法来设置,如:stat.setString(1,textDept.getText();表示用textDept文本框中用户输入的内容来设置参数值。5.3. 数据库编程处理带参数的查询31本实例运用前面介绍的知识能对图书管理系统中的借阅进行管理,步骤如下 (1)功能设

22、计 (2)数据库设计 (3)建立数据库操作类: (4)设计图书信息管理相关类 (5)设计借阅管理相关类 (6)设计图书查询类 (7)设计用户信息管理相关类Java实用编程技术图书借阅管理软件实例32(1)功能设计33(2)数据库设计34public class Dao protected static String dbClassName = com.microsoft.jdbc.sqlserver.SQLServerDriver;protected static String dbUrl = jdbc:microsoft:sqlserver:/localhost:1433; + Databa

23、seName=db_library;SelectMethod=Cursor useunicode=true;characterEncoding=GB18030 ;protected static String dbUser = sa;protected static String dbPwd = ;protected static String second = null;private static Connection conn = null;private Dao() System.out.println(dbUrl);try if (conn = null) Class.forName

24、(dbClassName).newInstance();conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);elsereturn; catch (Exception ee) ee.printStackTrace();(3)设计数据库操作相关的类Dao.建立数据库连接35public static int Insertbook(String ISBN,String typeId,String bookname,String writer,String translator,String publisher,Date date,Doub

25、le price) int i=0; try String sql=insert into tb_bookInfo(ISBN,typeId,bookname,writer,translator,publisher,date,price) values(+ISBN+,+typeId+,+bookname+,+writer+,+translator+,+publisher+,+date+,+price+);/System.out.println(sql); i=Dao.executeUpdate(sql); catch(Exception e) System.out.println(e.getMe

26、ssage(); Dao.close(); return i; Dao类中插入图书信息的方法36class addBookActionListener implements ActionListener / 添加按钮的单击事件监听器public void actionPerformed(final ActionEvent e) / 订书业务.String ISBNs=ISBN.getText().trim();String bookTypes=item.getId();String translators=translator.getText().trim();String bookNames

27、=bookName.getText().trim();String writers=writer.getText().trim();String publishers=(String)publisher.getSelectedItem();String pubDates=pubDate.getText().trim();String prices=price.getText().trim();int i=Dao.Insertbook(ISBNs,bookTypes, bookNames, writers, translators, publishers, java.sql.Date.valueOf(pubDates),Double.parseDouble(prices);if(i=1) JOptionPane.showMessageDialog(null, 添加成功); doDefaultCloseAction();(4)

温馨提示

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

评论

0/150

提交评论