• 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
  • 相关阅读:
    @Value不能给静态变量直接赋值问题
    jmeter测试http请求
    SqlServer单步调试
    mysql锁住 Lock wait timeout exceeded; try restarting transaction
    django在model中添加字段报错
    django admin下拉列表不显示值,显示为object的处理
    (原创推荐文章)kerberos服务器端与客户端
    kafka安装与测试
    Linux shell判断文件和文件夹是否存在
    df -h 卡死 如何解决
  • 原文地址:https://www.cnblogs.com/gucl/p/8111739.html
Copyright © 2020-2023  润新知