JDBC

第一章

  http://www.cnblogs.com/erbing/p/5805727.html

  sql事务和存储过程

  1. JDBC
    Java Data Base connetivity:Java数据库连接
  2. 下载jdbc驱动
    https://dev.mysql.com/downloads/connector/j/

    .jar文件就是所需要的驱动,把jar文件添加到工程中

  3. JDBC编程流程:
    1. 加载驱动程序 Class.forName(driverClass)
      • 加载MySql驱动:Class.forName("com.mysql.jdbc.Driver")
      • 加载Oracle驱动:Class.forName("oracle.jdbc.driver.OracleDriver")
    2. 获得数据库连接
      Connection conn = DriverManager.getConnection("jdbc://127.0.0.1:3306/xxxname","root","root")
    3. 创建Statement对象
      Statement st = conn.createStatement()
    4. 执行语句
      ResultSet rs = st.excuteQuery()等
    5. 处理结果
      while(rs.next()){...}
    6. 清理环境
      rs.close()
      st.close()
      conn.close()
      //1,加载驱动
              Class.forName("com.mysql.jdbc.Driver");
              
              //2,获得连接
              Connection conn = DriverManager.getConnection(url, username, password);
              
              //3创建Statement
              Statement st = conn.createStatement();
              
              //4.执行语句
              ResultSet rs = st.executeQuery(sql);
              
              //5,处理结果
              while(rs.next()){
                  
              }
              //6,清理环境
              rs.close();
              st.close();
              conn.close();
      View Code
  4. Statement接口和PrepareStatement接口
    • 后者是前者的子接口 
    • Statement为一条Sql语句生成执行计划,每次查询都会生成一个查询计划 ,而PrepareStatement使用占位符,通过set不同数据 可以生成一次执行计划,可以重用
    • PreparedStatement是预编译的,对于批量处理可以大大提高效率.也叫JDBC存储过程
    • 使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement对象的开销比Statement大,对于一次性操作并不会带来额外的好处
    • statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译得,preparedstatement支持批处理
    • CallableStatement接口继承自 preparedstatement接口,由方法prepareCall创,用于调用存储过程

  5. 事务transaction
    一组要么同时执行成功,要么同时执行失败的sql语句,是数据库操作的一个执行单元
    执行DML语句时事务开始
    执行COMMIT或ROLLBACK语句,事务结束。执行一条DDL或DCL语句,会自动执行COMMIT;执行一条DML,但该语句却失败了,会自动执行ROLLBACK

    特点:
    1. 原子性
      一个事务中的所有操作是一个整体,要么全成功,要么全失败
    2. 一致性
      如果一个事务内,有一个操作失败,那么其他修改过的数据都要恢复到修改前的状态
    3. 隔离性
      一个事务查看数据所处的状态,是另一个并发事务修改前或者修改后的状态,不会是中间状态;一个事务的执行不能影响其他事务
    4. 持久性
      事务完成之后,对系统的影响是永久性的;事务一旦提交,就会永久保存在数据库中,这时即使再回滚也不会撤销所做的更改
try {
            conn.setAutoCommit(false);//自动提交设置为false
            pst.executeQuery("查询sql");//执行查询
            pst.executeUpdate("更新sql");//执行更新
            conn.commit();//两个都操作成功后手动提交事务
        } catch (Exception e) {
            conn.rollback();//一旦有一个操作失败,事务回滚
            e.printStackTrace();
        }
transaction
原文地址:https://www.cnblogs.com/gucl/p/8111739.html