jdbc java数据库连接 3)Statement接口之执行DDL和DML语句的简化
上一章的代码中,可以发现,jdbc执行DDL和DML有几个步骤都是一样的:
1)执行语句开始时,创建驱动注册对象、获取连接的数据库对象、创建Statement对象
1 // 创建驱动注册对象 2 Class.forName("com.mysql.jdbc.Driver"); 3 4 // 获取连接的数据库对象 5 Connection conn = DriverManager.getConnection(url, user, 6 password); 7 8 // 创建Statement对象 9 Statement stsm = conn.createStatement();
2)所有操作执行完后,关闭连接(后来的先关)
1 if (stsm != null) { 2 try { 3 stsm.close(); 4 } catch (SQLException e) { 5 // TODO Auto-generated catch block 6 e.printStackTrace(); 7 throw new RuntimeException(e); 8 } 9 } 10 if (conn != null) { 11 try { 12 conn.close(); 13 } catch (SQLException e) { 14 // TODO Auto-generated catch block 15 e.printStackTrace(); 16 throw new RuntimeException(e); 17 }
所以,我们可以把这三大部分凑起来,建立一个jdbc的工具类:
jdbcutil
1 /** 2 * 这是jdbc执行DDL和DML的工具类 3 * 4 * @author LZl 5 * 6 */ 7 public class Jdbcutil { 8 9 // 创建数据库的基本信息 10 // 创建url 11 private static String url = "jdbc:mysql://localhost:3306/day1029?useUnicode=true&characterEncoding = GB2312 "; 12 // 数据库的用户名和密码 13 private static String user = "root"; 14 private static String password = "root"; 15 public static Connection conn = null; 16 static Statement stsm = null; 17 18 /** 19 * 一:注册的驱动程序 获取连接对象的方法 静态代码块(好处是只需要加载一次,且随着类的加载而加载) 20 */ 21 22 static { 23 try { 24 Class.forName("com.mysql.jdbc.Driver"); 25 } catch (Exception e) { 26 e.printStackTrace(); 27 System.out.println("获取数据库连接对象出错"); 28 } 29 } 30 31 /** 32 * 二:获取连接对象 该方法返回一个连接 33 */ 34 35 public static Connection getConnection() { 36 37 // 创建连接对象 38 try { 39 conn = DriverManager.getConnection(url, user, password); 40 } catch (SQLException e) { 41 // TODO Auto-generated catch block 42 e.printStackTrace(); 43 throw new RuntimeException(e); 44 } 45 return conn; 46 47 } 48 49 /** 50 * 三:释放资源,断开连接 参数列表:conn。stsm 51 */ 52 53 public static void close(Connection conn, Statement stsm) { 54 55 if (stsm != null) { 56 try { 57 stsm.close(); 58 } catch (SQLException e) { 59 // TODO Auto-generated catch block 60 e.printStackTrace(); 61 throw new RuntimeException(e); 62 } 63 } 64 65 if (conn != null) { 66 try { 67 conn.close(); 68 } catch (SQLException e) { 69 // TODO Auto-generated catch block 70 e.printStackTrace(); 71 throw new RuntimeException(e); 72 } 73 } 74 } 75 76 }
工具类再重载一个带有3个参数的关闭连接的方法:
1 public static void close(Connection conn,Statement stmt,ResultSet rs){2 if(rs!=null)3 try {4 rs.close();5 } catch (SQLException e1) {6 e1.printStackTrace(); 7 throw new RuntimeException(e1); 8 } 9 if(stmt!=null){ 10 try { 11 stmt.close(); 12 } catch (SQLException e) { 13 e.printStackTrace(); 14 throw new RuntimeException(e); 15 } 16 } 17 if(conn!=null){ 18 try { 19 conn.close(); 20 } catch (SQLException e) { 21 e.printStackTrace(); 22 throw new RuntimeException(e); 23 } 24 } 25 }
然后,1)jdbc使用DDL的方法要这样:
1 public class UtilTest { 2 3 private static Connection conn = null; 4 // 创建Statement对象 5 private static Statement stsm; 6 7 // 执行DDL语句(创建) 8 private static void DDL() { 9 10 try { 11 // 使用jdbc工具类来获取连接对象 12 conn = Jdbcutil.getConnection(); 13 14 // 准备sql语句 15 String sql = "CREATE TABLE person(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(10),sex VARCHAR(5),age INT,psot VARCHAR(10),email VARCHAR(20),phone INT)"; 16 17 stsm = conn.createStatement(); 18 19 // 发送sql语句 20 int result = stsm.executeUpdate(sql); 21 } catch (Exception e) { 22 e.printStackTrace(); 23 throw new RuntimeException(e); 24 } finally { 25 // 调用工具类的方法,关闭连接 26 Jdbcutil.close(conn, stsm); 27 } 28 } 29 public static void main(String[] args) { 30 DDL(); 31 } 32 }
2)执行DML语句:
1 //创建驱动注册对象 2 private static Connection conn = null; 3 // 创建Statement对象 4 private static Statement stsm = null; 5 6 // 执行DML语句(插入) 7 private static void DML() { 8 9 try { 10 // 使用工具类获取连接对象 11 conn = Jdbcutil.getConnection(); 12 13 // 准备sql语句 14 String sql = "INSERT INTO person (NAME,sex,age) VALUES ('张三','男',20);"; 15 16 // 创建statement对象 17 stsm = conn.createStatement(); 18 19 // 执行sql语句 20 int result = stsm.executeUpdate(sql); 21 System.out.println("影响了" + result + "行"); 22 23 } catch (Exception e) { 24 e.printStackTrace(); 25 throw new RuntimeException(e); 26 } finally { 27 // 调用工具类关闭连接 28 Jdbcutil.close(conn, stsm); 29 } 30 }
3)执行DQL语句:
1 // 创建驱动注册对象 2 private static Connection conn = null; 3 // 创建Statement对象 4 private static Statement stsm = null; 5 6 // 执行DQL语句 7 private static void DQL() { 8 9 try { 10 11 // 调用工具类连接对象 12 conn = Jdbcutil.getConnection(); 13 14 // 创建statement对象 15 stsm = conn.createStatement(); 16 17 // 准备sql语句 18 String sql = "SELECT * FROM person;"; 19 20 // 执行sql语句,返回的是RrsultSet对象 21 ResultSet rs = stsm.executeQuery(sql); 22 23 // 查看第二行数据 24 25 // 移动光标 26 rs.next(); 27 rs.next(); 28 // 使用列名来查看 29 int id = rs.getInt("id"); 30 String name = rs.getString("name"); 31 String sex = rs.getString("sex"); 32 System.out.println(id + "," + name + "," + sex); 33 34 } catch (Exception e) { 35 e.printStackTrace(); 36 throw new RuntimeException(e); 37 } finally { 38 // 调用工具类关闭连接,这里要多关闭一个连接:ResultSet,工具类的关闭方法要添加它 39 Jdbcutil.close(conn, stsm,rs); 40 } 41 42 }
转载于:https://www.cnblogs.com/LZL-student/p/6012715.html
jdbc java数据库连接 3)Statement接口之执行DDL和DML语句的简化相关推荐
- day04 JDBC java数据库连接
day04 JDBC java数据库连接 yuxiaohu已关注 2017.12.03 16:12:19字数 139阅读 85 1 导包 mysql 提供的实现java接口的包路径 C:\Progra ...
- jdbc java数据库连接 4)PreParedStatement接口 之 区别和例子
Statement 和 PreparedStatement 的区别: 1)语句不同 PreparedStatement需要预编译以及需要参数 2)由于PreparedStatement有缓存区,所以效 ...
- jdbc java数据库连接 5)CallableStatement 接口
CallableStatement执行存储过程(也是预编译语言) 首先在sql中执行以下带有输入参数的代码: 1 DELIMITER $ 2 CREATE PROCEDURE pro_findById ...
- Java Statement一次执行多条sql语句
网上的代码基本上没有问题,不过会存在一点瑕疵没有说清楚,导致试验了很久才成功,现在总结需要如下: 1.我们看了statement的execute文档,是可以进行多个语句执行的,文档内容如下: 2.除了 ...
- JDBC——Java数据库连接
JDBC 一.概念 二.连接 1.得到 Connection 对象 ①.DataSource 的方式 ②. DriverManager 的方式 2.得到语句对象 3.带结果的 SQL 语句:selec ...
- JAVA try...catch...finally中的执行顺序和return语句
public static int get() { try { System.out.println("try"); return 1; //throw new Exception ...
- javaweb——java数据库连接
文章目录 一.什么是JDBC 1.1JDBC常用的API 二.实现第一个JDBC程序 1..搭建数据库环境 2.编写JDBC程序 4.PreparedStatement 对象 5.ResultSet对 ...
- JDBC(Java Data Base Connectivity)基本用法
一.什么是JDBC JDBC(Java Database Connection)为java开发者使用数据库提供了统一的编程接口,它由一组java类和接口组成.是java程序与数据库系统通信的标准APl ...
- 执行DDL语句(创建表)
操作 JDBC 的步骤 : 加载注册驱动 获取连接对象 创建语句对象 执行SQL语句 释放资源 创建表和异常处理 案例 : 创建学生信息表(t_student) .包含 id/name/age 三个列 ...
最新文章
- 如何优雅的转换 Bean 对象!
- wp trackback.php,WordPress工作原理
- Oracle数据库对象----视图
- 矩形脉冲信号的频域分析_矩形周期脉冲信号MATLAB实现
- (原創) 如何在Ubuntu設定P7010的1280 x 768解析度? (OS) (Linux) (Ubuntu) (NB) (P7010)
- 51CTO各位博友大家好!
- jax-rs jax-ws_信守承诺:针对JAX-RS API的基于合同的测试
- 日志log4cxx 封装、实例讲解、配置文件log4cxx.properties
- 实现Fragment在ViewPager中滑动
- .net Remoting与Web Service的比较
- DEDECMS首页调用单页文档内容并带过滤HTML的方法
- NYOJ - 整数划分(四)
- php强制浏览器不缓存,php强制浏览器不缓存和设置浏览器缓存
- 分享一下免费的ppt网站(好看,免费)
- 高效记忆/形象记忆(14)110数字编码表 81-90
- VHDL半整数与奇数分频器设计实验
- 基于openflow的SDN技术
- uq mysql_MySQL workbench中的PK,NN,UQ,BIN,UN,ZF,AI说明
- 计算机在教育中的应用的基本现状,现代教育技术应用的现状与发展
- Android Mms短信的发送流程,短信发送源码解析