当前位置: 首页 > news >正文

JDBC和Statement的使用

文章目录

  • JDBC的使用
    • 1. 下载驱动
      • 1.1 MySQL驱动
      • 1.2 Oracle驱动
    • 2. 往项目中添加驱动并配置路径
      • 往idea添加mysql的jdbc
    • 3. 执行sql语句代码实现
    • 4. 封装数据库操作的工具类
    • 5. 使用Statment和ResultSet查询数据
    • 6. ResultSet详解
    • 7. 通过使用ResultSet实现逻辑分页

JDBC的使用

加载数据库驱动程序 → 建立数据库连接 Connection → 创建执行 SQL 的语句
Statement → 处理执行结果 ResultSet → 释放资源

1. 下载驱动

1.1 MySQL驱动

MySQL驱动下载地址: https://dev.mysql.com/downloads/connector/j/

1.2 Oracle驱动

数据库安装目录\oracle\product\11.2.0\dbhome_1\jdbc\lib

2. 往项目中添加驱动并配置路径

往idea添加mysql的jdbc

新建一个目录, 起名为lib

[外链图片转存失败(img-AMUJdrsQ-1565403585032)(assets/1565162607633.png)]

将库文件拷贝到lib目录下

[外链图片转存失败(img-i8fNJmOO-1565403585033)(assets/1565162679464.png)]

[外链图片转存失败(img-0hZMFjwk-1565403585035)(assets/1565162693015.png)]

右击添加过来的jdbc, 作为库文件添加. 这个时候就将jdbc添加到项目了

[外链图片转存失败(img-Mah2JqhB-1565403585036)(assets/1565162728121.png)]

3. 执行sql语句代码实现

新建一个类JdbcDemo.java. 向departments表添加一条数据. 当然, 更新也是一样的操作. 只是sql语句不同

package pers.jssd.jdbc.test;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;public class JdbcDome {public static void main(String[] args) {Connection con = null;Statement statement = null;try {// 注册驱动Class.forName("com.mysql.cj.jdbc.Driver");// 取得数据库连接con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myemployees?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC", "root", "root");statement = con.createStatement();String sql = "insert into departments values (default, 'Tes', 200, 1700)";int i = statement.executeUpdate(sql);System.out.println("i = " + i);} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();} finally {try {if (statement != null) {statement.close();}} catch (SQLException e) {e.printStackTrace();}if (con != null) {try {con.close();} catch (SQLException e) {e.printStackTrace();}}}}
}

4. 封装数据库操作的工具类

package pers.jssd.jdbc.util;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ResourceBundle;/*** 数据库连接对象** @author jssd*/
public class DBUtil {private static String URL;private static String USER;private static String PWD;static {ResourceBundle db = ResourceBundle.getBundle("db");String DRIVER = db.getString("driver");URL = db.getString("url");USER = db.getString("user");PWD = db.getString("pwd");// 注册驱动try {Class.forName(DRIVER);} catch (ClassNotFoundException e) {e.printStackTrace();}}/*** 取得连接对象** @return 返回连接对象*/public static Connection getConnection() {Connection con = null;// 取得数据库连接try {con = DriverManager.getConnection(URL, USER, PWD);} catch (SQLException e) {e.printStackTrace();}return con;}/*** 关闭资源** @param closeable 实现了AutoCloseable的可关闭变量*/public static void close(AutoCloseable... closeable) {for (AutoCloseable autoCloseable : closeable) {try {if (autoCloseable != null) {autoCloseable.close();}} catch (Exception e) {e.printStackTrace();}}}
}

资源文件如下

driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/myemployees?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
user = root
pwd = 1624022009.a

5. 使用Statment和ResultSet查询数据

package pers.jssd.jdbc.test;import pers.jssd.jdbc.util.DBUtil;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class JdbcDome3 {public static void main(String[] args) {selectDepartmentsById(272);}private static void selectDepartmentsById(int department_id) {String sql = "select * from departments where department_id = " + department_id;Connection connection = DBUtil.getConnection();Statement statement = null;ResultSet resultSet = null;try {statement = connection.createStatement();resultSet = statement.executeQuery(sql);while (resultSet.next()) {String department_name = resultSet.getString("department_name");System.out.println("department_name = " + department_name);}} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.close(resultSet, statement, connection);}}
}

6. ResultSet详解

注意 ResultSet 中封装的并不是我们查询到的所有的结果集, 而是返回了查询到的结果
集的数据库游标。 通过 ResultSet 中的 next()方法操作游标的位置获取结果集

7. 通过使用ResultSet实现逻辑分页

物理分页: 使用数据库查询实现查询分页

逻辑分页: 查询到的结果集不变, 只是通过游标取得某些数据

package pers.jssd.jdbc.test;import pers.jssd.jdbc.util.DBUtil;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;/*** 使用ResultSet查询数据, 并分页** @author jssdjing@gmail.com* @create 2019-08-07 22:02:32**/
public class JdbcDome4 {public static void main(String[] args) {selectDepartmentsById(2, 5);}private static void selectDepartmentsById(int currentPage, int pageCount) {String sql = "select * from departments";Connection connection = DBUtil.getConnection();Statement statement = null;ResultSet resultSet = null;try {statement = connection.createStatement();resultSet = statement.executeQuery(sql);int start = (currentPage - 1) * pageCount;int end = start + pageCount;int cur = 0;while (resultSet.next()) {if (cur >= start && cur < end) {int anInt = resultSet.getInt(1);System.out.println("anInt = " + anInt);String string = resultSet.getString(2);System.out.println("string = " + string);if (cur == end - 1) {break;}}cur ++;}} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.close(resultSet, statement, connection);}}
}

http://www.taodudu.cc/news/show-7665415.html

相关文章:

  • java.sql.statement_Java使用Statement接口执行SQL语句操作实例分析
  • JDBC的Statement对象的使用
  • java statement 参数_JDBC中Statement和Preparement的使用讲解
  • Unreachable statement
  • BUUCTF,Crypto:Cipher
  • python-RSA加密与java-Cipher加密适配
  • OpenSSL/GMSSL EVP接口说明——1.3 CIPHER_CTX操作
  • Cipher加密
  • Java Cipher 加密
  • xml文件collection应用
  • java集合之——Collection接口
  • Java--Collection和Map集合
  • Collection和Map
  • Collection用法
  • mybatis collection
  • Java集合Collection、List、Set区别与详解
  • Java集合-Collection集合体系概述
  • Collection集合类
  • 集合:Collection详解.
  • Windows安装完ADFS后卸载ADFS清除ADFS数据库
  • ADFS服务无法启动的原因排查
  • 更新adfs的证书_Office 365实战系列之三(安装配置ADFS)
  • 更新adfs的证书_Office 365 ADFS Token Signing 证书过期警告问题
  • ADFS 6.3 证书更新
  • ADFS修改默认访问端口
  • adfs sso java_实战:ADFS3.0单点登录系列-总览
  • java adfs sso_Spring SAML ADFS:java.security.InvalidKeyException
  • adfs sp java_SAML 2.0声称不通过ADFS
  • java adfs sso_实战:ADFS3.0单点登录系列-ADFS3.0安装配置
  • Dynamics 365配置ADFS