zoukankan      html  css  js  c++  java
  • JDBC详解(二)

    一:Statement与PreparedStatement的注意点

      

      存在sql注入的危险,如果用户传入的id为“2 or 1=1”,将删除表中的所有数据。而PreparedStatement有效的防止sql注入(SQl语句在程序运行前已经进行了预编译,当运行时动态的把参数传给PreparedStatement时,及时参数里有敏感字符如:“or 1=1”,数据库也会作为一个字段的属性值来处理而不会作为一个SQL指令):

    二:批处理(Batch)

      

      对于大量的批处理,建议使用Statement,因为PreparedStatement的预编译空间有限,当数据量特别大时,会发生异常。(测试结果:2万条数据插入,大概需要2秒半的时间)

    三:JDBC事务

       JDBC的事务默认是自动提交的:

      

      代码没有截图完整,在最后的finally中关闭连接没有截图。此段程序会报错:

      

      报错是因为第二次插入参数设置不对。从控制台看到“第一次插入”打印出来了,是不是第一次的插入成功了呢?然而并没有,因为我没手动这只了自动提交事务为false,所以第一次插入和第二次插入是同一个事务。而第二次显然报错了,说明没有执行成功,所以第一次插入也是没有将数据真的插入到数据库的。如果我们将“1”出的代码注释掉,那么第一次插入输入真的插进去呢?答案是真的插入进去了。因为JDBC事务默认是自动提交事务的,所以如果将“1”处的代码注释掉,那么虽然第二次插入报错了,第二次没有插入成功,但是第一次还真的是插入成功了。

  • 相关阅读:
    晶振及COMS电路
    笔记16 C# typeof() & GetType()
    笔记15 修饰符
    笔记14 数据库编程技术
    C#基础知识
    C#连接数据库
    笔记13 winform
    笔记12 export to excel (NPOI)
    笔记11 export to excel
    笔记10
  • 原文地址:https://www.cnblogs.com/vanl/p/7495864.html
Copyright © 2011-2022 走看看