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     }

  

时间: 2024-08-01 10:45:42

jdbc java数据库连接 3)Statement接口之执行DDL和DML语句的简化的相关文章

jdbc java数据库连接 3)Statement接口

|- Statement接口: 用于执行静态的sql语句 |- int executeUpdate(String sql)  : 执行静态的更新sql语句(DDL,DML) |- ResultSet executeQuery(String sql)  :执行的静态的查询sql语句(DQL) |-PreparedStatement接口(Statement接口的子类):用于执行预编译sql语句 |- int executeUpdate() : 执行预编译的更新sql语句(DDL,DML) |-Res

jdbc java数据库连接 2)jdbc接口核心的API

JDBC接口核心的API java.sql.*   和  javax.sql.*(java2.0以后更新的扩展) |- Driver接口: 表示java驱动程序接口.所有的具体的数据库厂商要来实现此接口. |- connect(url, properties):  连接数据库的方法.   url: 连接数据库的URL URL语法: jdbc协议:数据库子协议://主机:端口/数据库 user: 数据库的用户名 password: 数据库用户密码 |- DriverManager类: 驱动管理器类

JAVA学习笔记(五十)- JDBC Java数据库连接

JDBC操作步骤 /* * JDBC操作步骤 * */ public class Test01 { public static void main(String[] args) { try { //1.加载并注册驱动 Class.forName("com.mysql.jdbc.Driver"); //DriverManager.registerDriver(new com.mysql.jdbc.Driver()); System.out.println("注册驱动成功!&qu

jdbc java数据库连接 5)CallableStatement 接口

CallableStatement执行存储过程(也是预编译语言) 首先在sql中执行以下带有输入参数的代码: 1 DELIMITER $ 2 CREATE PROCEDURE pro_findById(IN sid INT) 3 BEGIN 4 SELECT * FROM person WHERE id = sid; 5 END $ 那么,这条语句的存储过程代码就是 CALL pro_findById (?); 使用CallableStatement来执行: 1 /** 2 带有输入参数的存储语

jdbc java数据库连接 11)中大文本类型的处理

1. Jdbc中大文本类型的处理 Oracle中大文本数据类型, Clob    长文本类型   (MySQL中不支持,使用的是text) Blob    二进制类型 MySQL数据库, Text    长文本类型 Blob    二进制类型 需求: jdbc中操作长文本数据. 设计: 测试表 编码: 保存大文本数据类型 读取大文本数据类型 保存二进制数据 读取二进制数据 MYSQL: 1 -- 测试大数据类型 2 CREATE TABLE test( 3 id INT PRIMARY KEY

jdbc java数据库连接 1)jdbc入门

  之前操作数据 1)通过mysql的客户端工具,登录数据库服务器  (mysql -u root -p 密码) 2)编写sql语句 3)发送sql语句到数据库服务器执行 什么是jdbc? 使用java代码(程序)发送sql语句的技术,就是jdbc技术!!!! 使用jdbc发送sql前提 登录数据库服务器(连接数据库服务器) 数据库的IP地址 端口 数据库用户名 密码 代码: 1 public class MySql_Demo1 { 2 3 //创建一个url 4 private static

java单元测试调用mybatis接口并执行

今天想使用单元测试类,存储一些数据到mysql,可是,一直在报错,org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'locationService' available 检查了好久,实属无奈找不出问题,试了一下手动构造注入javabean,奇迹的解决了这个问题. 单元测试具体写法: 1.使用注解@Before 读取dao层的xml配置文件,,注意,必须是dao层,否则找不到mybatis

jdbc java数据库连接 9)事务编程

1. 事务 基本概念: 事务使指一组最小逻辑操作单元,里面有多个操作组成. 组成事务的每一部分必须要同时提交成功,如果有一个操作失败,整个操作就回滚. 事务ACID特性: l 原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生. l 一致性(Consistency 事务必须使数据库从一个一致性状态变换到另外一个一致性状态. l 隔离性(Isolation) 事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务

03.JDBC数据库编程之处理DML语句

转载请标明出处:http://blog.csdn.net/u012637501 一.DML与Statement接口 1.DML(Data manipulation language) 数据库操作语句,用于添加.删除.更新和查询数据库纪录,并检查数据库的完整性.常用的语句关键字主要包括insert.delete.update等. (1)添加/修改/删除表数据 ■增加一行数据:(思想:往哪张表添加?给哪几行添加值?分别是什么值?) insert  into  表名  (列1,列2,...,列n)