JDBC操作数据库的学习(2)

  在上一篇博客《JDBC操作数据库的学习(1)》中通过对例1,我们已经学习了一个Java应用如何在程序中通过JDBC操作数据库的步骤流程,当然我们也说过这样的例子是无法在实际开发中使用的,本篇就在简单开发中如何对上一篇的例子进行“升级”,满足简单开发中对数据库的增删改查(CRUD)。

  如果按照上一篇中的例子,那么我们在做增删改查的话将会出现每个方法都要获取连接,释放资源,代码会出现很大的重复性,因此我们应该将每个增删改查每个方法中可以复用的代码抽取出来,同时为了能切换数据库方便,也该将一些配置信息在配置文件中单独定义,而不是在程序中写死。

例1:

在数据库中的数据定义:

    //创建一个库
    create database jdbcdemo;

    //使用该库
    use jdbcdemo;

    //创建一个user表
    create table user(
        id int primary key,
        name varchar(40),
        age int
    );

创建工程,并编写好配置信息文件:

  创建一个工程,将数据库驱动jar包导入,在【src】目录下新建一个database.properties文件:

  

在database.properties配置文件中的内容如下:

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/jdbcdemo
    username=root
    password=root

编写数据库工具类JdbcUtils

  不管一个工程中的哪个方法中要操作数据库之前,都要先确保驱动管理器中有数据库的驱动,获取连接,释放资源,这些操作有些只要执行一次,有些要重复的被调用,因此使用一个工具类来封装是最适合不过的。

 1 public class JdbcUtils {
 2
 3     private static Properties config = new Properties();
 4
 5     static{
 6         InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("database.properties");
 7         try{
 8             config.load(in);
 9             Class.forName(config.getProperty("driver"));
10
11
12         }catch (Exception e) {
13             throw new ExceptionInInitializerError(e);
14         }
15     }
16
17     public static Connection getConnection() throws SQLException {
18         String url = config.getProperty("url");
19         String username = config.getProperty("username");
20         String password = config.getProperty("password");
21         Connection conn = DriverManager.getConnection(url, username, password);
22         return conn;
23     }
24
25     public static void release(Connection conn,Statement st,ResultSet rs) {
26         if(rs!=null) {
27             try{
28                 rs.close();
29             }catch (Exception e) {
30                 e.printStackTrace();
31             }
32         }
33         if(st!=null) {
34             try{
35                 st.close();
36             }catch (Exception e) {
37                 e.printStackTrace();
38             }
39         }
40         if(conn!=null) {
41             try{
42                 conn.close();
43             }catch (Exception e) {
44                 e.printStackTrace();
45             }
46         }
47     }
48 }

  在这个工具类中,因为从配置文件中加载数据库的信息和使用反射向驱动管理器中注册数据库的驱动在整个工程应用中只需要执行一次,因此使用静态代码块来编写这些功能。视同Property对象将保存数据库信息,以便在该工具类获取连接的方法getConnection方法中能为每次调用提供URL,用户名和密码信息。另外既然作为工具类,该类中的方法最好都是静态的。

  可以看到如果在JdbcUtils工具类中发生异常,那么我是直接转型为ExceptionInInitializerError错误,因为数据库作为底层最关键的一个环节都出错了,那么这个应用不应该再执行,当然要抛出异常还是错误可以根据个人或情况选择。

  这个工具类只是做了最简单的注册驱动器,获取连接和释放资源,实际开发时可以根据需要再往该工具类中添加其他实用的方法。

对数据库进行增删改查:

  前面写好了工具类,那么我们在一些类中的方法要对数据库进行操作,那么就可以从工具类中先获取方法,再写好自己的业务逻辑操作后再使用工具类的方法进行资源释放。

 1 public class Demo {
 2
 3     public void insert() throws SQLException {
 4         Connection conn = null;
 5         Statement st = null;
 6         ResultSet rs = null;
 7         try{
 8             conn = JdbcUtils.getConnection();  //获取连接
 9             st = conn.createStatement();
10             String sql = "insert into user(id,name,age) value(1,‘Ding‘,25)";
11             int num = st.executeUpdate(sql);
12             if(num>0) {
13                 System.out.println("数据添加成功!");
14             }
15         }finally{
16             JdbcUtils.release(conn, st, rs);  //释放资源
17         }
18     }
19 }

  这里只在demo中演示了对数据库进行添加数据的操作,修改和删除只是在sql语句上有所不同,而如果是查询则会返回结果集ResultSet对象,在上一篇中的例1和例2都已经说明,这里不再叙述。在一般的WEB开发中,我们会将对数据库的增删改查放在DAO层进行。

  本篇以对数据库的增删改查为例,主要在于描述如何创建一个工具类,并在该工具类中注册数据库驱动,编写实用的获取连接和释放资源的静态方法,这些都是在我看来比较有用的设计思想。

时间: 2024-10-06 00:02:11

JDBC操作数据库的学习(2)的相关文章

JDBC操作数据库的学习(1)

单单对数据库的操作,比如说MySQL,我们可以在命令行窗口中执行,但是一般是应用程序要操作数据库,因此我们应该在程序中的代码上体现对数据库的操作,那么使用程序应用如何操作数据库呢?那就要使用到数据库的连接驱动,应用程序通过这些驱动来操作数据库: 但是这里就又有一个问题了,不同的数据库有各自的驱动程序,而一个应用程序要操作不同的数据库,那么就要懂得要使用的数据库的驱动如何操作,这样就增加了学习成本.好在我们使用Java开发应用,而Java中只需要使用JDBC就能操作所有的数据库,因为JDBC提供的

Spark Streaming通过JDBC操作数据库

本文记录了学习使用Spark Streaming通过JDBC操作数据库的过程,源数据从Kafka中读取. Kafka从0.10版本提供了一种新的消费者API,和0.8不同,因此Spark Streaming也提供了两种API与之对应,其中spark-streaming-kafka-0-8支持Kafka 0.8.2.1以后的Broker:spark-streaming-kafka-0-10支持0.10.0以上Broker,处于实验阶段.两者的对比如下表所示. |spark-streaming-ka

JDBC操作数据库的三种方式比较

JDBC(java Database Connectivity)java数据库连接,是一种用于执行上sql语句的javaAPI,可以为多种关系型数据库提供统一访问接口.我们项目中经常用到的MySQL.oracle.DB2等关系型数据库均是通过JDBC来访问的,现在主流的ORM框架Hibernate.Mybatis等均是在JDBC的基础上做的进一步封装.优化.一般小型的项目,可以直接用JDBC来访问数据库,简单方便.我在进过几个项目后,总结了三总JDBC的基本用法,对这几种用法做一个总结. 第一种

jdbc操作数据库语句

非常有用的jdbc操作数据库语句,记录下来,以方便以后的查询. public class PersonDao { // 增加操作 public void insert(Person person) throws Exception; // 修改操作 public void update(Person person) throws Exception; // 删除操作 public void delete(String id) throws Exception ; // 按ID查询操作 publi

几种通过JDBC操作数据库的方法,以及返回数据的处理

1.SQL TO String :只返回一个查询结果 例如查询某条记录的总数 rs = stmt.executeQuery(replacedCommand);             if (rs != null && rs.next()) // rs only contains one row and one column             {                    String tempStr = rs.getString(1);                 

JDBC操作数据库的基本步骤

JDBC操作数据库的基本步骤: 1)加载(注册)数据库驱动(到JVM). 2)建立(获取)数据库连接. 3)创建(获取)数据库操作对象. 4)定义操作的SQL语句. 5)执行数据库操作. 6)获取并操作结果集. 7)关闭对象,回收数据库资源(关闭结果集-->关闭数据库操作对象-->关闭连接). package com.yangshengjie.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java

JDBC操作数据库的基本操作

JDBC操作数据库的基本步骤: 1)加载(注册)数据库驱动(到JVM). 2)建立(获取)数据库连接. 3)创建(获取)数据库操作对象. 4)定义操作的SQL语句. 5)执行数据库操作. 6)获取并操作结果集. 7)关闭对象,回收数据库资源(关闭结果集-->关闭数据库操作对象-->关闭连接). 1 package com.yangshengjie.jdbc; 2 import java.sql.Connection; 3 import java.sql.DriverManager; 4 imp

JDBC操作数据库的详细步骤

JDBC操作数据库的步骤: 1.注册驱动 告知JVM使用的是哪一个数据库的驱动 2.获得连接 使用JDBC中的类,完成对MySQL数据库的连接 3.获得语句执行平台 通过连接对象获取对SQL语句的执行者对象 4.执行sql语句 使用执行者对象,向数据库执行SQL语句 获取到数据库的执行后的结果 5.处理结果 6.释放资源  一堆close() 1.注册驱动,发射技术,将驱动加入到内容 使用java.sql.DriverManager类静态方法 registerDriver(Driver driv

封装JDBC操作数据库的方法

自己动手封装java操作数据库的方法: 一:目录结构 二:所需依赖的第三方jar包 这里只需引入mysql-connector-java-5.1.8-bin.jar,mysql数据库驱动jar包 三:代码 1:和数据库进行交互,首先是数据源,获取连接,代码如下: 1 /** 2 * 3 */ 4 package com.hlcui.datasource; 5 6 import java.sql.Connection; 7 import java.sql.DriverManager; 8 impo