一文带你快速学会JDBC及获取连接的五种方式

目录
  • 1. JDBC基本介绍
  • 2. JDBC快速入门
    • 2.1 JDBC程序编写步骤
    • 2.2 案例演示
      • 2.2.1 前置工作,在数据库中建立对应表
      • 2.2.2 前置工作,导入MySQL数据库的对应jar包
  • 3. 相关类的介绍
    • 3.1 Statement
    • 3.2 ResultSet[结果集]
    • 3.3 PreparedStatement
  • 4. 关闭资源
  • 5. 获取数据库连接的五种方式
    • 方式一
    • 方式二
    • 方式三
    • 方式四
    • 方式五
  • 总结

快速学会JDBC及获取连接的五种方式

1. JDBC基本介绍

  • JDBC为访问不同的数据库提供了统一的接口,为使用者屏蔽了细节问题
  • Java程序员使用JDBC,可以连接任何提供了JDBC驱动程序的数据库系统,完成对数据库的各种操作。
  • JDBC基本原理图

2. JDBC快速入门

2.1 JDBC程序编写步骤

  • 注册驱动-加载Driver类
  • 获取连接-得到Connection
  • 执行增删改查-发送SQL给MySQL执行
  • 释放资源-关闭相关连接

2.2 案例演示

2.2.1 前置工作,在数据库中建立对应表

CREATE TABLE `actor`(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(32) NOT NULL DEFAULT '',
sex CHAR(1) NOT NULL DEFAULT '女',
borndate DATETIME,
phone VARCHAR(12));

2.2.2 前置工作,导入MySQL数据库的对应jar包

在项目下新建一个文件夹如libs,将对应jar包拷入,并将其加入library中

public static void main(String[] args) throws SQLException {
        //注册驱动
        Driver driver = new Driver();
        String url="jdbc:mysql://localhost:3306/zxy_db01";
        String user="root";
        String psd = "123";
        DriverManager.registerDriver(driver);
        //获得连接
        Connection connection = DriverManager.getConnection(url,user,psd);
        //执行SQL语句
        String sql = "insert into actor values(null, '刘德华', '男', '1970-11-11', '110')";
        //statement 用于执行静态 SQL 语句并返回其生成的结果的对象
        Statement statement = (Statement) connection.createStatement();
        int rows = statement.executeUpdate(sql);
        System.out.println(rows > 0 ? "成功" : "失败");
        //关闭资源
        statement.close();
        connection.close();
    }

然后我们再去查询数据库,就会发现已经成功啦

3. 相关类的介绍

3.1 Statement

相信对于上面的代码中你最好奇的就是Statement这个类,我们就来聊一聊这个。

基本介绍:

  1. 用于执行静态Sql语句并返回其生成结果
  2. 在连接建立后,需要对数据库进行访问,执行命名或是SQL语句,可以通过Statement(存在SQL注入问题)PrepardStatement(预处理) CallableStatement(存储过程)
  3. Statement对象执行SQL语句,存在SQL注入风险
  4. SQL注入是利用某些系统没有对用户输入对数据进行充分对检查,而在用户输入数据中注入非法对SQL语句段或命令,恶意攻击数据库
  5. 要防范SQL注入,只要用PreparedStatement(从Statement扩展而来),取代Statement就可以了

其实归根究底,这个类就是一个用来调用执行SQL语句的类。

3.2 ResultSet[结果集]

这个是执行查询的SQL时返回的对象,如下面这段代码

String sql = "select id, name , sex, borndate from actor";
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) { // 让光标向后移动,如果没有更多行,则返回 false
    int id = resultSet.getInt(1); //获取该行的第 1 列
    String name = resultSet.getString(2);//获取该行的第 2 列
    String sex = resultSet.getString(3);
    Date date = resultSet.getDate(4);
    System.out.println(id + "\t" + name + "\t" + sex + "\t" + date);
}

表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。

ResultSet对象保持一个光标指向其当前的数据行。 最初,光标位于第一行之前。 next方法将光标移动到下一行,并且由于在ResultSet对象中没有更多行时返回false ,因此可在while循环中使用循环来遍历结果集。

3.3 PreparedStatement

这个类其实和上面介绍的Statement效果类似,相当于Statement的改进版,增加了预处理过程避免了sql注入现象(简单来讲就是破获你的数据库中的信息),下面我们就来聊聊它

  1. PreparedStatement执行的SQL语句中的参数用问号(?)来表示,调用PreparedStatement对象额setXxx()方法来设置这些参数,setXxx()方法有两个参数,第一个参数是要设置的SQL语句中的参数的索引(从1开始),第二个是设置的SQL语句中的参数的值。
  2. 调用executeQuery(),返回ResultSet对象
  3. 调用 executeUpdate(),执行增删改等操作。

其优点也是极其明显的

  • 不再使用+拼接SQL语句,减少语法错误
  • 有效的解决了SQL注入问题
  • 大大减少了编译次数,效率提高

话不多说,我们直接上案例

String sql = "select name , pwd from admin where name =? and pwd = ?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "刘德华");
preparedStatement.setString(2, "123");
ResultSet resultSet = preparedStatement.executeQuery(sql);
if (resultSet.next()) { //如果查询到一条记录,则说明该管理存在
    System.out.println("恭喜, 登录成功"); }
else {
    System.out.println("对不起,登录失败");
     }

4. 关闭资源

在JDBC编码过程中,我们创建了resultSet,statement,connection等资源,这些资源在使用完毕后一定要进行关闭资源,关闭的过程中遵循从里到外的原则,因为在增删改查中的操作中都要用到这样的关闭操作

resultSet.close();
statement.close();
connection.close();

5. 获取数据库连接的五种方式

方式一

直接通过Driver类获得连接

 public void way1() throws SQLException {
        Driver driver = new Driver();
        String url = "jdbc:mysql://localhost:3306/zxy_db01";
        Properties info = new Properties();
        info.setProperty("user","root");
        info.setProperty("psd","123");
        Connection connect = driver.connect(url, info);
        System.out.println(connect);
    }

方式二

通过反射的方式加载Driver类获得连接

 public void way2() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException {
        Class<?> clzz = Class.forName("com.mysql.jdbc.Driver");
        Driver driver = (Driver) clzz.newInstance();
        String url = "jdbc:mysql://localhost:3306/zxy_db01";
        Properties info = new Properties();
        info.setProperty("user","root");
        info.setProperty("psd","123");
        Connection connect = driver.connect(url, info);
        System.out.println(connect);
    }

方式三

使用DriverManager替换Driver获得连接

 public void way3() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException {
        Class<?> clzz = Class.forName("com.mysql.jdbc.Driver");
        Driver driver = (Driver) clzz.newInstance();
        String url="jdbc:mysql://localhost:3306/zxy_db01";
        String user="root";
        String psw = "123";
        DriverManager.registerDriver(driver);
        Connection connection = DriverManager.getConnection(url,user,password);
        System.out.println(connection);
    }

方式四

使用Class.forName自动完成驱动注册获得链接

public void way4() throws SQLException, ClassNotFoundException {
        Class.forName("com.mysql.jdbc.Driver");
        String url="jdbc:mysql://localhost:3306/zxy_db01";
        String user="root";
        String psd = "123";
        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println(connection);
    }

方式五

借助配置文件获得来获得连接

user=root
psd=123
url=jdbc:mysql://localhost:3306/zxy_db01
driver=com.mysql.jdbc.Driver
 public void way5() throws SQLException, ClassNotFoundException, IOException {
        Properties properties = new Properties();
        properties.load(new FileInputStream("src\\mysql.properties"));
        String user = properties.getProperty("user");
        String password = properties.getProperty("psd");
        String url = properties.getProperty("url");
        String driver = properties.getProperty("driver");
        Class.forName(driver);
        Connection connection = DriverManager.getConnection(url, user, psd);
        System.out.println(connection);
    }

相信看完本篇你对jdbc已经有了不错的了解了

总结

到此这篇关于一文快速学会JDBC及获取连接的五种方式的文章就介绍到这了,更多相关学会JDBC及获取连接方式内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • JDBC如何获取数据库连接

    JDBC(Java Database Connectivity),即Java数据库连接.通过JDBC编程,可以使Java应用程序和数据库进行交互. JDBC驱动的方式有很多种,我们常用的驱动方式为:本地协议的纯Java驱动程序. JDBC编程的第一步,就是要获取数据库连接.所谓的 "获取数据库连接" 其实就是创建java.sql.Connection接口的实现对象.通过Connection的实现对象,可以使Java程序连接到数据库,并修改和获取数据库信息. 获取数据库连接有两种方式:1

  • 详解JDBC的概念及获取数据库连接的5种方式

    目录 一.JDBC概念 二.JDBC获取数据库连接的5种方式 方式一 方式二 方式三 方式四 方式五 一.JDBC概念 Java DataBase Connectivity(Java数据库连接技术) 它是将Java与SQL结合且独立于特定的数据库系统的应用程序编程接口(API-它是一种可用于执行SQL语句的JavaAPI,即由一组用Java语言编写的类与接口所组成) JDBC的设计目的: 它是一种规范,设计出来的主要目的是为了让各个数据库开发商为Java程序员提供标准的数据访问类和接口,使得独立

  • JDBC获取数据库连接由浅入深

    添加MySQL驱动: 不同的数据库厂商都会有自己的实现java.sql.Driver接口的驱动程序,例如mysql的实现就是com.mysql.jdbc.Driver,将mysql-connector-java-版本号-bin.jar添加到相应工程的目录(如果是动态web项目的话,需要将对应的jar包放到WebRoot目录下)下面,右键选择add as library就完成了(如果是使用的eclipse,则是点击build path). 在mysql8.0之后驱动程序的全路径应该是com.mys

  • JDBC获取数据库连接的5种方式实例

    目录 方式一:直接通过数据库厂商提供的相关驱动 方法二:通过反射的方式来构造Driver对象 方式三:使用DriverManager来替换Driver获取连接 方法四:省略创建Driver对象和注册驱动 方式五:通过配置文件的方式 每种方式迭代的原因 方式五的优点 总结 方式一:直接通过数据库厂商提供的相关驱动 步骤 导入相关驱动(Build Path) 创建Driver类的实例化对象 获取要连接数据库的URL 创建Properties类的实例化对象,将账号和密码封装到该对象中 通过Driver

  • 一文带你快速学会JDBC及获取连接的五种方式

    目录 1. JDBC基本介绍 2. JDBC快速入门 2.1 JDBC程序编写步骤 2.2 案例演示 2.2.1 前置工作,在数据库中建立对应表 2.2.2 前置工作,导入MySQL数据库的对应jar包 3. 相关类的介绍 3.1 Statement 3.2 ResultSet[结果集] 3.3 PreparedStatement 4. 关闭资源 5. 获取数据库连接的五种方式 方式一 方式二 方式三 方式四 方式五 总结 快速学会JDBC及获取连接的五种方式 1. JDBC基本介绍 JDBC为

  • 一文带你轻松学会Go语言动态调用函数

    目录 前言 JavaScript 动态调用函数 Go 中动态调用方法 前言 经常在开发的时候会遇到这样的场景,几个模块的都有相同的方法,但会因为不同的类型的需要调用不同模块的方法.使用一个 switch 可以很方便的解决问题.但是当你遇到的场景是几个模块的方法都是需要的执行,同时它需要在不同的配置下执行相对应的方法. func m1(){} func m2(){} func m3(){} c := cron.New(cron.WithSeconds()) c.addFunc(config1,fu

  • java使用JDBC连接数据库的五种方式(IDEA版)

    JDBC是java访问数据库的基础,其余的mybatis和JDO 以及Hibernate 都是把jdbc封装起来,因此了解JDBC连接数据库的原理十分重要!! 准备工作 1. mysql的jar包 导入到lib目录下 2.把导入的jar包添加到项目中 点击jar包   选择 3.创建一个TestConnection类 五种方式如下: /** * @author * @date 2019 **/ import org.junit.Test; import java.io.InputStream;

  • 六分钟带你快速学会react中的useMemo

    目录 概念 useMemo 栗子 筛选偶数 每秒获取时间刷新页面 如何优化 useCallback.React.memo 总结 概念 react 中是通过一次次的 re-render (重新渲染)保持我们的值及时的更新到页面上的,每次重新渲染都是一次快照,可以把它想象成一张张的照片,在某个时刻它应该是什么样子的 useMemo 把创建函数和依赖数组项作为参数传入 useMemo,它仅仅会在数组依赖项中的值改变时才会重新计算值 这种优化有助于避免在每次渲染时都进行高开销的计算 useMemo 的函

  • 三分钟带你快速学会微信小程序的条件渲染

    目录 前言 1.wx:if实现条件渲染 2.block结合wx:if使用 3.hiden实现条件渲染 4. wx:if vs hidden 补充:hidden 和 wx:if 的区别 总结 前言 这篇文章是三分钟学会小程序的条件渲染教程,所谓的条件渲染就是判断是否需要把代码渲染到展示页面上.使用以下三种方式可以实现条件渲染,各自有不同的应用场景,只有熟练掌握其用法,在使用时才能得心应手. 1.wx:if实现条件渲染 在框架中,使用 wx:if="" 来判断是否需要渲染该代码块: <

  • 一文带你快速了解java中的static关键词

    Static基本规则: (1)一个类的静态方法只能访问静态属性. (2)一个类的静态方法不能直接调用非静态方法. (3)如果访问权限允许,static属性和方法可以使用对象加'.'方式调用,当然也可以使用实例加'.'方式调用. (4)静态方法中不存在当前对象,所以不能使用this,当然也不能使用super. (5)静态方法不能被非静态方法覆盖. (6)构造方法不允许被声明为static的. static关键词,可以加在方法上,成员变量上,代码块. 类就不要想了. 1. static方法 stat

  • JDBC连接Access数据库的几种方式介绍

    接下来总结一下常用的几种连接方式. 例如有如下的Access数据库student,表basic,以及6条记录,现在通过几种方式在Jsp中将他们的数据显示出来.如图所示: 对于几种连接Access数据库的方式,基本上都是基于JDBC-ODBC方式的,当然也有纯JDBC驱动的方式.这里我暂时就不说了.对于这几种方式,除了取得连接之处不同外,其他的代码都是一样的.所以这里先写出取得连接的几种方式,然后再用完整的代码进行显示. 方式一:通过JDBC-ODBC方式桥连直接连接: 1.对于这种方式,首先要建

随机推荐