• jdbc、事务(Transaction)、批处理 回顾


    论文写的头疼,回顾一下jdbc,换换脑子

    传统的写法:

    1.加载驱动类

    class.forname("jdbc类的包结构");

    2.获得连接

    Connection conn=DriverManager.getConnection("url","username","userpwd");

    3.获得描述

    Ststement stmt =conn.createStstement();

    4.执行动作

    stmt.executeCreate("sql");

    ResultSet rs=stmt.executeQuery("sql");

    while(rs.next){

    }

    注意:传统写法安全性不是很好,有可能遭到sql恶意注入的问题

    可以将描述替代为

    PreparedStatement pstmt=conn.PreparedStatement("sql");

    当然此时的sql语句要采用占位符的形式

    insert into test(user,name,pwd) values(?,?,?)

    同时,在执行动作时,就不必传入“sql”参数

    当然在执行动作之前要设置参数

    pstmt.setString(1,"");

    pstmt.setString(2,"");

    pstmt.setInt(3,"");

     注意要遵循类型的方式

    以上代码不代表具体执行代码,只具备伪代码的功能。

    因为有些方法具体怎么拼写,我忘了

    凡是涉及到操作数据库,免不了要说说事务(Transaction)了:

    事务:保证与数据库操作的过程中,数据的一致性和完整性。

    事务的属性:

    ACID

    即:

    Atomic原子性:一堆又一堆的事务操作,要么全都成功,要么全都失败,不存在部分成功或失败的情况

               开始事务

                       一堆事务操作

                       ……

               事务结束

    Consistency一致性:事务操作前后,数据满足同样的规则

    Isolation隔离性:事务内部的数据对外的可见性和可操作性。即不同事务边界内的数据是限制权限的

    D稳定性、持久性:事务内部的数据都能够呗正确的持久化

    jdbc默认是自动提交的,只要执行动作语句成功,哪怕下一句异常,数据仍然被提交!

    jdbc手动设置事务的方法:

    首先,关闭jdbc的自动提交功能

      conn.setAutoCommit(false);

    其次,在执行动作成功后,提交

      conn.commit();

    最后,如果有异常,事务回滚

      conn.rollback();

    关于批处理:

    即存在多条sql的时候,可通过batch进行批处理

    string sql1="……";

    string sql2="……";

    stmt.addBatch(sql1);

    stmt.addBatch(sql2);

    完整教程:http://download.csdn.net/detail/u012373717/8874243

  • 相关阅读:
    单例模式-Singlleton
    C#中静态与非静态方法比较
    关于orcale的数据库脚本,记录下来,方便自己以后用到查找
    关于Oracle和SQLServer数据库在.net中拼接数据库语句的不同
    Oracle数据类型与.NET中的对应关系
    Got a packet bigger than 'max_allowed_packet' bytes
    .NET、C#和ASP.NET三者之间的区别(转)
    The use specified as definer('root'@'%') does not exist的解决办法
    app.config .exe.config .vshost.exe.config配置
    python学习:(3)自动化表单提交
  • 原文地址:https://www.cnblogs.com/felixzh/p/4622642.html
Copyright © 2020-2023  润新知