JDBC入门中,关于DbUtils有几点小疑问?

JDBC入门中,关于DbUtils有几点小疑问?

1、为什么只有修改要用事务,查询不用事务?

2、DbUtils是通过Object[]防止注入的?

3、下面语句为什么不能用e?

try {

     if(conn!=null&&!conn.isClosed()){ conn.rollback(); 

    } 

} catch (SQLException e1) {

     e1.printStackTrace(); 

}

4、Employee.class在hrapp下,不在sample下,是怎么把这个实体类找到的?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,关于同学的问题,有如下回答:

1、如果一次只执行单条查询语句,没有必须使用事务。如果是一次执行查询多条语句,有必要使用事务。更多时候,是做修改操作时设置事务,保证多条操作同时成功或失败。

2、是通过预编译的方式预防sql注入的。Object[]是用来传入参数的。

3、这里不可以使用e的原因是在外层还有一个catch定义了e,如果在内层的catch中再定义e是重复定义,会报错的,所以不能用e,如:

http://img1.sycdn.imooc.com//climg/612c7fb009d1d7e310030380.jpg

4、在类名上边使用import导入Employee类即可在sample下的类中使用Employee实体类。

祝学习愉快~

  • 童真模式启动 提问者 #1

    1、DbUtils查询用事务怎么写,弄成和修改一样的语法?

    2、DbUtils不是没有PrepareStatement吗,还是它已经封装在里面,默认就是?

    3、Java不是说括号外的变量无法作用到括号里的同名变量吗?

    int a=1; 

        ​int a=2;

     } 

        ​int a=3;

     }

    2021-08-31 09:15:23
  • 同学你好,关于同学的问题:

    1、和修改中使用事务是一样的,需要先将自动提交设置为false,然后书写sql语句并执行,执行成功则使用commit提交,在catch回滚事务。

    2、底层使用的PrepareStatement对SQL进行预编译,例如:

    http://img1.sycdn.imooc.com//climg/612d8875097efb1109150624.jpg

    3、同学的理解是错误的。变量a定义后,在变量a的作用域范围内,不能重复定义,例如同学的代码就会提示变量重复定义,如:

    http://img1.sycdn.imooc.com//climg/612d88cd093d994005430374.jpg

    祝学习愉快~

    2021-08-31 09:49:33
  • 1、为什么查询多条查询也要事务?为什么不是查询1条——不用事务、查询多条——不用事务、修改1条——不用事务、修改多条——用事务。


    2021-09-01 09:10:11
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师