详解JDBC编程六步附模板代码

文章目录


前言

本文详细介绍了JDBC的编程的六个步骤。首先来回顾一下JDBC的六步:

  1. 注册驱动
  2. 获取数据库连接
  3. 获取数据库操作对象
  4. 执行SQL语句
  5. 处理查询结果
  6. 释放资源

一、注册驱动

  • 需要掌握注册驱动的常用的两种方式
  1. Class.forName("com.mysql.jdbc.Driver");
    该方法最常用,因为参数是字符串,字符串可以写在xxxx.properties中
  2. System.setProperty("jdbc.drivers","com.mysql.cj.jdbc.Driver");
    该方法可以导入多个jdbc驱动,中间用冒号:隔开
    例如:System.setProperty("jdbc.drivers","XXXDriver:XXXDriver:XXXDriver");

二、获取数据库连接

  • 语句
connection = DriverManager.getConnection(url, user, password);
/*getConnection(String url, String user, String password) 
试图建立到给定数据库 URL 的连接。* /
  • 什么是url?
url:统一资源定位符(网络中某个资源的绝对路径)
                包括:
                    1.协议
                    2.ip
                    3.port
                    4.资源名
                 举例:https://220.181.38.149:80/index.html
                    https://        通讯协议
                    220.181.38.149  服务器ip地址
                    80              服务器上软件的端口号
                    index.html      服务器上的某个资源

            jdbc:mysql://localhost:3306/newsmanagersystem
                   jdbc:mysql://        协议:通信协议之前就定义好的数据传送格式,即数据包具体怎么传数据
                    localhost           ip地址(localhost和127.0.0.1都是本机IP)
                    3306                mysql数据库端口号
                    newsmanagersystem   具体的数据库实例名
  • 注意:需要明确传递的三个参数是什么!!

三、获取数据库操作对象

  • 语句
statement = connection.createStatement();
//调用createStatement()方法创建数据库操作对象

四、执行SQL语句

  • 语句
statement.executeUpdate("sql语句");//执行INSERT、UPDATE 或 DELETE 语句,返回int
resultSet = statement.executeQuery("sql语句");//执行select,返回查询结果集
           

五、处理查询结果集

  • 语句
boolean flag = resultSet.next();//光标指向的行,true为有数据,false无数据
              //  遍历输出查询结果集
            while (flag) {
                //取数据,这里的1,2,3指的是第几列,也可以写成列名(即查询结果集的列明,不是表中的列名称)
                //getString()方法的特点:不管数据库中的数据类型是什么,都以string的类型输出
                //除了string类型取出外,也可以使用特定的类型取出,但需要视情况而定
                String ntitle = resultSet.getString(1);
                String ncreateDate = resultSet.getString("data");
                String ncontent = resultSet.getString(3);
            }

六、关闭连接

  • 语句
 //6.释放资源
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                if (statement != null) {
                    try {
                        statement.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                    if (connection != null) {
                        try {
                            connection.close();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }

                    }

                }
            }
  • 注意:为了保证资源一定释放,在finally语句块中关闭资源, 并且要遵循从小到大依次关闭,分别对其try,catch。

七、模板代码

import java.sql.*;

/**
 * 回顾jdbc的六步
 * 1.注册驱动           掌握常用的两种方式
 * 2.获取数据库连接      connection=DriverManager.getConnection(url,user,password)明确三个参数是什么
 * 3.获取数据库操作对象   获取数据库连接对象connection后,就可以通过connection.createStatement()获取数据库操作对象statement
 * 4.执行SQL语句        拿到数据库操作对象statement后,就可以通过statement对象调用两种方法 1.executeUpdate() 2.executeQuery()  注意两种方法的返回值类型
 * 5.处理查询结果       只针对executeQuery()方法查询后的结果集resultSet
 * 6.释放资源
 */
public class JDBCtemplate {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;//
        try {
            //1.注册驱动
            try {
                Class.forName("com.mysql.jdbc.Driver");//原理利用类加载机制
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            //2.获取连接
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/newsmanagersystem", "root", "root");
            //3.获取数据库操作对象
            statement = connection.createStatement();
            //4.执行SQL语句
            statement.executeUpdate("");
            resultSet = statement.executeQuery("select ntitle,ncreateDate as data,ncontent  from news");
            //5.处理查询结果集
            boolean flag = resultSet.next();
              //  遍历输出查询结果集
            while (flag) {
                String ntitle = resultSet.getString(1);
                String ncreateDate = resultSet.getString("data");
                String ncontent = resultSet.getString(3);
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //6.释放资源
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                if (statement != null) {
                    try {
                        statement.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                    if (connection != null) {
                        try {
                            connection.close();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }

                    }

                }
            }
        }
    }
}

总结

熟练掌握JDBC编程的6步,谢谢!

上一篇:JDBC


下一篇:运行项目报错:java.sql.SQLException: Before start of result set