- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JDBC与操作数据库 编写数据库操作的大致流程 需要安装好对应数据库,比如MySQL。并添加数据库,添加表对象、数据等。 需要在项目里加入对应的jdbc jar包文件(封装访问特定数据库的类)。不同数据库产品对应的包是不一样的,如此处MySQL,可加入MySQL-connector-java-5.1.19-bin.jar。 Java代码,一般步骤(try、catch、finnaly): //注册JDBC驱动 Class.forName(org.gjt.mm.mysql.Driver); //建立与DB的连接 Connection conn =DriverManager.getConnection( jdbc:MySQL://localhost:3306/mydb, root, 1234); //CRUD操作 …… //关闭连接 conn.close(); JDBC与操作数据库 Statement执行增删改查 查询 … Statement stmt = conn.createStatement();//执行SQL语句的对象 String query = SELECT * FROM student; ResultSet rs=stmt.executeQuery(query);//查询返回的结果集对象 while(rs.next()){ System.out.println(rs.getString(1) +rs.getString(sname)); } stmt.close(); … 增删改 … Statement stmt = connection.createStatement(); String query = insert into sc values (1,3,90); int rows = stmt.executeUpdate(query);// 返回SQL影响的行数 … JDBC与操作数据库 PreparedStatment预处理 JDBC有三种查询方式, Statement?为通用查询,? PreparedStatement?用于执行参数化查询, CallableStatement用于存储过程。 PreparedStatment预处理优点: 执行高效、防止SQL注入、数据处理简便 高效:动态参数化处理,实质是将SQL语句框架先行分析、编译并缓存在数据库端,参数值传过来后马上执行。当多次执行相同结构SQL时,显然能减少数据库的负载; 防注入:PreparedStatement内置了字符过滤,因此可以防止SQL注入: 典型案例pwd输入?or?1?or,传统statement拼装为where?… pwd=?or?1?or 此外,规避了传统SQL对binary数据、日期数据处理较弱问题。采纳:setBinaryStream ()、setDate() JDBC与操作数据库 批处理 Batch 利用预处理SQL语句,把多个SQL语句一起发送到数据库端,在一次连接上批量执行。 例: String query = insert into sc values (?,?,?); pstmt = connection.prepareStatement(query); pstmt.setString(1,1); pstmt.setString(2,5); pstmt.setString(3,70); pstmt.addBatch(); pstmt.setString(1,1); pstmt.setString(2,6); pstmt.setString(3,80); pstmt.addBatch(); pstmt.executeBatch(); //一起处理 事务 数据库隔离级别 有5种,可用connection. setTransactionIsolation=设置值 TRANSACTION_NONE? 不支持事务? TRANSACTION_READ_UNCOMMITTED?允许脏读、不可重复读和幻读。? TRANSACTION_READ_COMMITTED?禁止脏读,但允许不可重复读和幻读。? TRANSACTION_REPEATABLE_READ?禁止脏读和不可重复读,单运行幻读。? TRANSACTION_SERIALIZABLE?禁止脏读、不可重复读和幻读。? 注:设置级别,
文档评论(0)