jdbc

JDBC

   JDBC    --Java Database Connectivity:Java访问数据库的解决方案。    --解决服务器与数据库交互的问题
    --JDBC定义了一套标准接口,即访问数据库的通用API,不同的数据库厂商根据各自数据库的特点去实现这些接口。
 
    做浏览器、网页:需学会HTML、CSS、JS            还要学会Servlet,其解决的是浏览器与服务器交互的问题。


    Spring框架:提高java继承、JavaSE的效率
    SpringMVC、Struts2框架:提高Servlet的效率
    MyBatis、Hibernate框架:提高JDBC的效率
    jQuery框架:提高HTML、CSS、JS的效率。


一、JDBC
  1.什么是JDBC? Sun推出的用来访问数据库的解决方案。


  2.要点:
    --接口:只有一套、Sun规定的统一接口、是我们学习的重点
    --实现类:多套、有数据库厂商实现的、有工具可以自动管理他们。   


    不同厂商提供的实现类,我们叫做驱动。对于我们以后使用时,只要导入对应的jar包。DriverManager来管理这些Jar(驱动)。




  3.JDBC访问数据库的工作过程:
    --加载驱动:告诉DriverManager我们要用哪个jar包(驱动)。
    --创建连接:调用DriverManager的getConnection方法,获得Connection接口,用于与数据库连接
    --通过连接创建Statement:
    --写SQL语句,执行SQL语句:
                   --executeQuery()  ->DQL(SELECT)
  --executeUpdate() ->DML(INSERT\UPDATE\DELETE)
  --execute()       ->可以执行任何SQL,但通常用他执行DDL  
    --关闭连接
    **将简单的参数存入properties文件中,是java的经典做法。
  4.连接池
    #直接使用DriverManager的问题
     --它会无节制的创建连接,当连接数达到上限时,数据库会崩溃。
    #使用连接池可以解决该问题
     --连接池对连接进行管理和限制,避免达到上限;
     --连接池中的连接可以复用,从而提高效率。
    #常用的连接池:                                                        
     --DBCP                                                         
     --C3P0
 =============================================================== 
   JDBC                    2016.5.25


   Statement --->发送SQL给DB      
   DB:1.检查SQL   2.编译SQL,生成计划    3.运行计划    4.返回结果
   结论:
       1.生成计划很慢,但相同的SQL可以复用一个计划
       2.结构相同但参数不同的SQL,是不同的计划 
         SELECT * FROM emps WHERE empno=1
         SELECT * FROM emps WHERE empno=2
       3.Statement不适合执行这样的SQL
         只适合执行静态的(无参数)SQL
总结:一般使用Statement执行DDL(CREATE\DROP\ALTER\TRUNCATE)
 ##PreparedStatement:提升性能,防止注入攻击
   select * from emps_zc where deptno=?
   PreparedStatement  --->第一步:发送SQL给DB       ---DB检查SQL--->生成计划
                      --->第二步:发送参数          ---DB运行计划--->返回结果
   结论:
       1.允许使用?代表一切参数,使相同结构的SQL可以固定下来
       2.访问数据库:
         -发送SQL
-发送参数
       3.上述两个处理使得计划可以复用,因此效率可以提高
         总结:PreparedStatement适合执行动态SQL
 
 ##JDBC支持的日期类型
   --java.sql.Date(年月日)
   --java.sql.Time(时分秒)
   --java.sql.Timestamp(年月日时分秒)
   上述3个日期类型都继承与java.util.Date
 
 ##结果集元数据
  #元(Meta)
   -根本、本质
  #元数据(MetaData)
   -数据的本质
   -数据的基本信息
   -用来描述某数据的数据
  #结果集元数据(ResultSetMetaData)
   -用来描述结果集的数据
   -结果集的基本信息


 ##JDBC对事务的支持
  #1.自动提交(默认)
   -JDBC默认支持事务
   -执行executeUpdate()时,JDBC会自动commit
  #2.手动提交
   -con.setAutoCommit(false);   //取消自动提交
   -con.commit();               //手动提交事务
   -con.rollback();             //回滚事务
 ##事务
  #什么是事务?
   满足如下特性的数据库访问叫事务
   1.原子性:事务是一个完整的过程,要么都成功,要么都失败。
   2.一致性:事务前后的数据要一致,即收支平衡(总和不变)
   3.隔离性:事务过程中的数据不能被访问
   4.持久性:事务一旦达成,就永久有效,不能否认。




 ##JDBC对分页的支持
  #假分页(内存分页)
   --首次查询时查出所有数据,存入List,并从List中取出第一页数据返回;
   --再次查询时,不再访问数据库,而是直接从List中取出第N页数据返回。
   --特点:十分占内存,首次查询巨慢,以后查询很快;
   --适用于数据量非常小的小项目
  #真分页(物理分页)
   --每次查询都使用分页SQL从库中查出一页的数据返回;
   --特点:节约内存,每次查询的速度都较快;
   --适用于任何项目
  
 page*size  本页最后行


 (page-1)*size 上页最后行
 (page-1)*size+1 本页第一行
 begin =  (page-1)*size+1
 end = page*size


##JavaBean(补充)
  #满足如下规范的类:
   1.有package
   2.有默认构造器
   3.实现序列化接口
   4.有get/set方法  (这一点不是必须得)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值