- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7.6 JDBC对数据库操作实例 二、执行预处理SQL语句的实例 三、执行存储过程的实例 四、获取数据表信息 五、JDBC事务的应用 应用事物不能采用自动提交模式 。如果出现异常,回滚事物: try { prpdStmt = conn.prepareStatement(insert into tb_money values(?,?,?,?,?,?)); prpdStmt.setString(1, inName); ……//省略其他属性的设置 prpdStmt.setString(6, date); prpdStmt.executeUpdate(); } catch (SQLException e) { isTurn = false; //在捕捉到异常的情况下将isTurn改为false System.out.println( 在转帐时抛出异常,内容如下:); e.printStackTrace(); try { conn.rollback(); } catch (SQLException e1) { System.out.println( 在回滚数据库事务时抛出异常,内容如下:); e1.printStackTrace(); } * 2.执行预编译SQL语句对象 PreparedStatement接口的executeUpdate(String sql)方法将执行添加(insert)、修改(update)和删除(delete)的SQL语句,执行成功后,将返回一个int型数值,该值为影响数据库记录的行数。 PreparedStatement接口的executeQuery(String sql)方法将执行查询(select)语句,执行成功后,将返回一个ResultSet类型的结果集对象,该对象将存储所有满足查询条件的数据库记录。例如: PreparedStatement ps=con.prepareStatement(insert into wy_table values (?,?)); ps.setInt(1,6); ps.setString(2,添加); int num=ps.executeUpdate(); PreparedStatement ps=con.prepareStatement(select * from wy_table where id=?); ps.setInt(1,6); ResultSet rs=ps.executeQuery(); 使用PreparedStatement的好处: 1)依赖于服务器对预编译查询的支持,以及驱动程序处理原始查询的效率,预备语句在性能上的优势可能有很大的不同。 2)安全是预备语句的另外一个特点,通过HTML表单接受用户输入,然后对数据库进行更新时,一定要使用预备语句或存储过程。 3)预备语句还能够正确地处理嵌入在字符串中的引号以及处理非字符数据,例如,向数据库发送序列化后的对象。 注意:执行executeQuery(String sql) 方法或executeUpdate()方法时, 会抛出SQLException类型的异常,所以需要通过try-catch进行捕捉。 3.执行数据库存储过程 CallableStatement接口的executeUpdate(String sql)方法将执行添加(insert)、修改(update)和删除(delete)的数据库的存储过程,执行成功后,将返回一个int型数值,该数值为影响数据库记录的行数。 CallableStatement接口的executeQuery(String sql)方法将执行查询数据库的存储过程,执行成功后,将返回一个ResultSet类型的结果集对象,该对象将存储所有满足查询条件的数据库记录。 例如,数据库中有如下一个存储过程: create procedure p_insert (@name varchar(20),@sex char(4), @tel varchar(30),@address varchar(50),@birthday varchar(50 )) AS insert into users(name,sex,tel,address, birthday)values(@name, @sex,@tel,@address,@birthday) GO 通过CallableStatement对象执行数据库中的该存储过程: CallableStatement cs=connection.prepareCall(); CallableSt
文档评论(0)