java入门篇17 -- JDBC编程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java入门篇17 -- JDBC编程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3829字,纯文字阅读大概需要6分钟。
内容图文
![java入门篇17 -- JDBC编程](/upload/InfoBanner/zyjiaocheng/647/603e271d2cf2436582752ef309996f34.jpg)
对于读取数据,我们应当如何与数据库打交道呢,这个时候应该使用JDBC,就是java帮助我们实现了操控数据库的一些连接,我们只需要到时候加载一个连接数据库的插件
下面即使java程序的对数据库的增删改查,以及事务处理
import java.sql.*; public class HelloWorld { public static void main(String[] args) throws Exception { String JDBC_URl = "jdbs:mysql://127.0.0.1:3306/bbsoo"; String JDBC_USER = "root"; String JDBC_PASSWORD = "mysql"; // 查找数据 try (Connection conn = DriverManager.getConnection(JDBC_URl, JDBC_USER, JDBC_PASSWORD)) { // 方法一使用 Statement try (Statement st = conn.createStatement()) { // 执行语句 try (ResultSet rs = st.executeQuery("select user_id, username, user_type from bbs_users;")) { // 判断是否有下一个值 while (rs.next()) { int id = rs.getInt(1); String username = rs.getString(2); int user_type = rs.getInt(3); System.out.println("first: user :id" + id + " username:" + username + "user_type:" + user_type); } } } // 方式二 PreparedStatement try (PreparedStatement st = conn.prepareStatement("select ?, ?, ? from bbs_users;")) { // 在对应位置拼接我们的字符 st.setObject(1, "user_id"); st.setObject(2, "username"); st.setObject(3, "user_type"); try (ResultSet rs = st.executeQuery()) { while (rs.next()) { int id = rs.getInt(1); String username = rs.getString(2); int user_type = rs.getInt(3); System.out.println("second: user :id" + id + " username:" + username + "user_type:" + user_type); } } } } // 插入数据 try (Connection conn = DriverManager.getConnection(JDBC_URl, JDBC_USER, JDBC_PASSWORD)) { // 准备sql语句 try (PreparedStatement ps = conn.prepareStatement("INSERT INTO bbs_users (username, user_type) values (?, ?) ")) { // 填入对应索引位置的值 ps.setObject(1, "ming"); ps.setObject(2, 1); // 执行sql语句,返回值表示插入的记录数量 int n = ps.executeUpdate(); System.out.println(n); // 这个可以抓住插入的那条数据 try (ResultSet rs = ps.getGeneratedKeys()) { if (rs.next()) { int id = rs.getInt(1); // 获取id } } } } // 更新 try (Connection conn = DriverManager.getConnection(JDBC_URl, JDBC_USER, JDBC_PASSWORD)) { try (PreparedStatement ps = conn.prepareStatement("UPDATE bbs_users SET username=? where id =?")) { ps.setObject(1, "ning"); ps.setObject(2, 1); int n = ps.executeUpdate(); // 返回更新的条数 System.out.println(n); } } // 删除 try (Connection conn = DriverManager.getConnection(JDBC_URl, JDBC_USER, JDBC_PASSWORD)) { try (PreparedStatement ps = conn.prepareStatement("DELETE FROM bbs_users where id = ?")) { ps.setObject(1, 1); int n = ps.executeUpdate(); // 返回删除条数 System.out.println(n); } } // 事务 try (Connection conn = DriverManager.getConnection(JDBC_URl, JDBC_USER, JDBC_PASSWORD)) { try { conn.setAutoCommit(false); try (PreparedStatement ps = conn.prepareStatement("DELETE FROM bbs_users where id = ?")) { ps.setObject(1, 1); int n = ps.executeUpdate(); // 返回删除条数 System.out.println(n); } try (PreparedStatement ps = conn.prepareStatement("DELETE FROM bbs_users where id = ?")) { ps.setObject(1, 2); int n = ps.executeUpdate(); // 返回删除条数 System.out.println(n); } conn.commit(); } catch (SQLException e) { e.printStackTrace(); } finally { conn.setAutoCommit(true); conn.close(); } } // batch, 对于又重复操作,并且可以进行整理数据进行逐条执行,效率较低,可以使用batch try (Connection conn = DriverManager.getConnection(JDBC_URl, JDBC_USER, JDBC_PASSWORD)) { // 准备sql语句 try (PreparedStatement ps = conn.prepareStatement("INSERT INTO bbs_users (username, user_type) values (?, ?) ")) { // 填入对应索引位置的值 for (int i = 0; i < 10; i++) { ps.setObject(1, "ming" + i); ps.setObject(2, 1); ps.addBatch(); // 添加到batch中 } // 执行sql语句,返回的是每一条成功数量的数组 int[] n = ps.executeBatch(); for (int nn : n) { System.out.println(nn + "success"); } } } } }
我们都知道数据库的几大特性:原子性,一致性,隔离性,持久性,那么为了保证数据一致性,在进行多次操作数据库,或者这些数据修改会影响数据库一致性的情况下,一定要开启事务,这样最终失败,可以进行数据回滚,保证数据的一致性
内容总结
以上是互联网集市为您收集整理的java入门篇17 -- JDBC编程全部内容,希望文章能够帮你解决java入门篇17 -- JDBC编程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。