案例1:JDBC的六步操作之插入:
package com.java.JDBC; import java.sql.*; public class JDBCTest01 { public static void main(String[] args) { Connection conn = null; Statement stmt = null; try { // 1 注册驱动 Driver driver = new com.mysql.jdbc.Driver(); // 多态,父类型引用执行子类型对象。 // Driver driver = new oracle.jdbc.driver.OracleDriver(); // oracle驱动 DriverManager.registerDriver(driver); // 2 获取连接 /* url:统一资源定位符(网络中某个资源的绝对路径) https://www.baidu.com/ 这就是URL URL包括哪几部分? 协议 IP PORT 资源名 http://14.215.177.39/index.html http:// 通信协议 14.215.177.39 服务器IP地址 80 服务器上软件的端口 index.html 是服务上某个资源名 jdbc:mysql://127.0.0.1:3306/mydatabase jdbc:mysql:// 协议 127.0.0.1 IP地址 3306 mysql的数据库端口号 mydatabase 具体的数据库实例名 说明:localhost和127.0.0.1都是本机IP地址。 什么是通信协议,有什么用? 通信协议是通信之前提前定好的数据传送格式。 数据包具体怎么传数据,格式提前定好的。 oracle的URL: jdbc:oracle:thin:@localhost:1521:orcl */ String url = "jdbc:mysql://127.0.0.1:3306/mydatabase"; String user = "root"; String password = "333"; conn = DriverManager.getConnection(url,user,password); // 数据库连接对象 = com.mysql.jdbc.JDBC4Connection@7bb11784 System.out.println("数据库连接对象 = " + conn); // 3 获取数据库操作对象(Statement专门执行sql语句的) stmt = conn.createStatement(); // 4 执行sql语句 String sql = "insert into dept(deptno,dname,loc) values(50,'人事部','北京')"; // 专门执行DML语句的(insert update delete) // 返回值是“影响数据库中的记录条数” int count = stmt.executeUpdate(sql); System.out.println(count == 1 ? "保存成功" : "保存失败"); // 5 处理返回结果集 } catch (SQLException e) { e.printStackTrace(); } finally { // 6 释放资源 // 为了保证资源一定释放,在finally语句块中关闭资源 // 并且要遵循从小到大依次关闭 // 分别对其 try..catch if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
案例2:JDBC的六步操作之删除和更新(为了巩固):
package com.java.JDBC; import java.sql.*; public class JDBCTest02 { public static void main(String[] args) { Connection conn = null; Statement stmt = null; try { // 1 注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver()); // 2 获取连接 conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydatabase","root","333"); // 3 获取数据库操作对象 stmt = conn.createStatement(); // 4 执行sql语句 // int count = stmt.executeUpdate("delete from dept where deptno = 50"); int count = stmt.executeUpdate("update dept set deptno = 88 where deptno = 10 "); System.out.println(count == 1 ? "删除成功" : "删除失败"); // 5 获取sql结果集 } catch (SQLException e) { e.printStackTrace(); } finally { // 6 释放资源 if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
案例3:JDBC的六步操作之升级写法介绍(比较常用):
package com.java.JDBC; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class JDBCTest03 { public static void main(String[] args) { try { // 1 注册驱动 // 这是比较常用的写法 // 为什么这种方式常用?因为参数是一个字符串,字符串你可以写到xxx.properties文件中。 // 以下方法不需要接收返回值,因为我们只想用他的类加载动作。 Class.forName("com.mysql.jdbc.Driver"); // 2 获取连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase","root","333"); // com.mysql.jdbc.JDBC4Connection@3ab39c39 System.out.println(conn); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } }
案例4:JDBC的六步操作升级写法案例:
jdbc.properties
driver=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/mydatabase user=root password=333
代码:
package com.java.JDBC; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.ResourceBundle; /* 实际开发中不建议把连接数据库的信息写死到java程序中。 写到配置文件中,方便以后的更改,并且不用重启程序。 */ public class JDBCTest04 { public static void main(String[] args) { // 使用资源绑定器绑定属性配置文件 ResourceBundle bundle = ResourceBundle.getBundle("jdbc"); String driver = bundle.getString("driver"); String url = bundle.getString("url"); String user = bundle.getString("user"); String password = bundle.getString("password"); Connection conn = null; Statement stmt = null; try { // 1 注册驱动 Class.forName(driver); // 2 获取连接 conn = DriverManager.getConnection(url,user,password); // 3 获取数据库操作对象 stmt = conn.createStatement(); // 4 执行sql语句 // int count = stmt.executeUpdate("delete from dept where deptno = 50"); int count = stmt.executeUpdate("update dept set deptno = 88 where deptno = 10 "); System.out.println(count == 1 ? "更新成功" : "更新失败"); // 5 获取sql结果集 } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { // 6 释放资源 if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }