zoukankan      html  css  js  c++  java
  • 20145312 《Java程序设计》第九周学习总结

    20145312 《Java程序设计》第九周学习总结

    学习笔记

    Chapter 16整合数据库

    16.1 JDBC入门

    16.1.1 JDBC简介

    1. SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范(接口),称之为JDBC。这套接口由数据库厂商去实现,这样,开发人员只需要学习jdbc接口,并通过jdbc加载具体的驱动,就可以操作数据库。
    2. JDBC全称为:Java Data Base Connectivity(java数据库连接),它主要由接口组成。
    3. 组成JDBC的2个包:
    java.sql
    javax.sql
    
    1. 开发JDBC应用需要以上2个包的支持外,还需要导入相应JDBC的数据库实现(即数据库驱动)。

    16.1.2 连接数据库

    1. 注册Driver操作对象
      (1)JDBC程序中的DriverManager用于加载驱动,并创建与数据库的链接,这个API的常用方法:
      DriverManager.registerDriver(new Driver()) DriverManager.getConnection(url, user, password)。
      (2)在实际开发中并不推荐采用registerDriver方法注册驱动。原因有二:
      1)查看Driver的源代码可以看到,如果采用此种方式,会导致驱动程序注册两次,也就是在内存中会有两个Driver对象。
      2)程序依赖mysql的api,脱离mysql的jar包,程序将无法编译,将来程序切换底层数据库将会非常麻烦。
      (3)推荐方式:Class.forName("com.mysql.jdbc.Driver"):
      采用此种方式不会导致驱动对象在内存中重复出现,并且采用此种方式,程序仅仅只需要一个字符串,不需要依赖具体的驱动,使程序的灵活性更高。
    2. 取得Connection操作对象
      (1)Jdbc程序中的Connection,它用于代表数据库的链接,Collection是数据库编程中最重要的一个对象,客户端与数据库所有交互都是通过connection对象完成的,这个对象的常用方法:
    	createStatement():创建向数据库发送sql的statement对象。
    	prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。
    	prepareCall(sql):创建执行存储过程的callableStatement对象。
    	setAutoCommit(boolean autoCommit):设置事务是否自动提交。
    	commit() :在链接上提交事务。
    	rollback() :在此链接上回滚事务。
    

    16.1.3 使用Statement、ResultSet

    1. Jdbc程序中的ResultSet用于代表Sql语句的执行结果。Resultset封装执行结果时,采用的类似于表格的方式。ResultSet 对象维护了一个指向表格数据行的游标,初始的时候,游标在第一行之前,调用ResultSet.next() 方法,可以使游标指向具体的数据行,进行调用方法获取该行的数据。
    2. ResultSet既然用于封装执行结果的,所以该对象提供的都是用于获取数据的get方法:
    3. 获取任意类型的数据,例如:
    getObject(int index) getObject(string columnName)
    
    1. 获取指定类型的数据,例如:
    getString(int index)
    getString(String columnName)
    
    1. ResultSet还提供了对结果集进行滚动的方法:
    	next():移动到下一行
    	Previous():移动到前一行
    	absolute(int row):移动到指定行
    	beforeFirst():移动resultSet的最前面。
    	afterLast() :移动到resultSet的最后面。
    
    1. Statement在执行executeQuery()、executeUpdate()时,如果有些部分是动态的数据,必须用+连字符串接字符串以组成完整的SQL语句。
    2. 如果有些操作只是SQL语句当中某些参数不同,其余SQL子句皆相同,使用java.sql.PrepareStatement,使用Connection的preparedStatement()方法建立好预先编译好的SQL语句,用“?”代替参数中会变动的部分,需要真正指定参数执行时,再使用setInt()、setString()等方法指定“?”处应有的参数。
    3. 执行executeQuery()或executeUpdate()方法后,可以调用clearParameters()清除设置的参数,之后就能再次使用这个PreparedStatement实例。
    4. java.sql.CallableStatement的API使用与PreparedStatement差别不大,除了必须调用prepareCall()建立CallableStatement异常之外,一样是使用setXXX()设定参数,查询操作使用executeQuery(),更新操作使用executeUpdate(),使用registerOutParameter()注册输出参数。
    5. 日期在JDBC中,并不是使用java.util.Date,这个对象可代表的日期格式是“年、月、日、时、分、秒、毫秒”,JDBC表示日期,用java.sql.Date,日期格式是“年、月、日”,表示时间使用java.sql.Time,时间格式为“时、分、秒”,java.sql.Timestamp格式“时、分、秒、微秒”。

    16.2 JDBC进阶

    16.2.1 使用DataSource取得联机

    1. MessageDAO依赖于javax.sql.DataSource接口,可以通过其自定义的getConnection()方法取得Connection。

    16.2.32使用ResultSet卷动、更新

    1. ResultSet时可默认使用next()移动数据光标至下一笔数据,而后使用getXXX()方法来取得数据。
    2. 使用Connection的createStatement()或prepareStatement()方法建立Statement或PreparedStatement实例时,可以指定结果集类型与并行方式。
    3. 使用absolute()、afterlast()、beforeFirst()、first()、last()进行绝对位置移动,使用relative()、previous()、next()进行相对位置移动,成功返回true,使用isAfterLast()、isBeforeFirst()、isFirst()、isLast()判断目前位置。
    4. 结果集类型可以指定3种设定:
    ResultSet.TYPE_FORWARD_ONLY(默认)
    ResultSet.TYPE_SCROLL_INSENSITIVE
    ResultSet.TYPE_SCROLL_SENSITIVE
    
    1. 更新设定有两种指定:
    ResultSet.CONCUR_READ_ONLY(默认)
    ResultSet.CONCUR_UPDATABLE
    

    16.2.3 批次更新

    1. 使用addBatch()方法来收集SQL,并使用executeBatch()方法将所收集的SQL传送出去.
    2. SQL的执行顺序就是addBath()时的顺序.
      16.2.4 Blob与Clob
    3. 文档写入数据库,可以在数据库表格字段上使用BLOB(Binary Large Object),用于存储大量的二进制数据或CLOB数据类型(Character Large Object),用于储存大量的文字数据.
    4. JDBC中提供了java.sql.Blob与java.sql.Clob两个类分别代表BLOB与CLOB数据.
    5. 通过PreparedStatement的setBlob()来设定Blob对象,读取数据时,可以通过ResultSet的getBlob()取得Blob对象。
      16.2.5 交易简介
    6. JDBC可以操作可以操作Connection的setAutoCommit()方法,给它false自变量,提示数据库开始交易。
    7. 下达一连串的SQL语句后,自行调用Connection的commit(),提示数据库确认操作,中间发生错误,调用rollback(),提示数据库撤销所有的执行。
    8. 隔离行为的支持上,JDBC可以通过Connection的getTransactionIsolation()取得数据库目前的隔离行为设定,通过setTransactionIsolation()可提示数据库设定指定的隔离行为,可设定常数是定义在Connection上。
      16.2.6 metadata简介
    9. JDBC,通过Connection的getMetaData()方法取得DatabasemetaData对象,通过该对象提供的方法取得数据库整体信息,Result表示查询到的数据。
      16.2.7 RowSet简介
    10. RowSet定义了列列集合基本行为,其下有JdbcRowSet(联机式的)、CachedRowSet(脱机式的)、FilteredRowSet、JoinRowSet与WebRowSet五个标准列操作子接口,定义在javax.sql.rowset。

    代码托管截图

    学习进度条

  • 相关阅读:
    比特币脚本及交易分析
    分析比特币网络:一种去中心化、点对点的网络架构
    比特币如何挖矿(挖矿原理)-工作量证明
    比特币所有权及隐私问题-非对称加密应用
    区块链记账原理
    用Python从零开始创建区块链
    基础语法-算术运算符
    基础语法-数据类型转换
    基础语法-数据类型介绍及使用
    基础语法-变量介绍
  • 原文地址:https://www.cnblogs.com/yx20145312/p/5451346.html
Copyright © 2011-2022 走看看