Java JDBC篇1——初识JDBC

Java DataBase Connectivity Java 数据库连接(Java语言操作数据库)

1、什么是JDBC

其实是官方定义的一套操作所有关系型数据库的规则(接口),各个数据库厂商去实现这套接口,提供数据库驱动jar包,我们使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类

2、MySql驱动包

官网地址 https://mvnrepository.com/artifact/mysql/mysql-connector-java

mysql-connector-java-5.1.49.jar 百度云:https://pan.baidu.com/s/17J2VfkGS2h44j69eB8TuFA提取码:nhnt

mysql-connector-java-8.0.25.jar 百度云:https://pan.baidu.com/s/1b8n7650uMKJtwidoptOjNQ提取码:wtvn

3、JDBC快速入门

3.1、建表和数据

USE test;
CREATE TABLE USER (id INT PRIMARY KEY AUTO_INCREMENT ,username VARCHAR(50),PASSWORD VARCHAR(50),birthday DATE
);
INSERT INTO USER (username, PASSWORD,birthday)
VALUES('admin1', '123','2000-12-24'),
('admin2','123','2003-12-24'),
('test1', '123','2006-12-24'),
('test2', '123','2005-12-24');

3.2、JDBC

5.x

public class Test {public static void main(String[] args) {Connection connection = null;Statement statement = null;ResultSet resultSet = null;try {// 1、注册驱动Class.forName("com.mysql.jdbc.Driver");// 2、获取连接String url="jdbc:mysql://localhost:3306/test";String username="root";String password="blingbling123.";connection = DriverManager.getConnection(url, username, password);//3、定义sqlString sql="select * from user";//4、获取指定sql对象statement = connection.createStatement();//5、执行sqlresultSet = statement.executeQuery(sql);//6、取出结果while (resultSet.next()){System.out.println(resultSet.getString("username"));}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException throwables) {throwables.printStackTrace();} finally {//7、关闭连接if (resultSet!=null){try {resultSet.close();} catch (SQLException throwables) {throwables.printStackTrace();}}if (statement!=null){try {statement.close();} catch (SQLException throwables) {throwables.printStackTrace();}}if (connection!=null){try {connection.close();} catch (SQLException throwables) {throwables.printStackTrace();}}}}
}

8.x

public class Test {public static void main(String[] args) {Connection connection = null;Statement statement = null;ResultSet resultSet = null;try {// 1、注册驱动Class.forName("com.mysql.cj.jdbc.Driver");// 2、获取连接String url="jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=utf-8&useSSL=false";String username="root";String password="blingbling123.";connection = DriverManager.getConnection(url, username, password);//3、定义sqlString sql="select * from user";//4、获取指定sql对象statement = connection.createStatement();//5、执行sqlresultSet = statement.executeQuery(sql);//6、取出结果while (resultSet.next()){System.out.println(resultSet.getString("username"));}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException throwables) {throwables.printStackTrace();} finally {//7、关闭连接if (resultSet!=null){try {resultSet.close();} catch (SQLException throwables) {throwables.printStackTrace();}}if (statement!=null){try {statement.close();} catch (SQLException throwables) {throwables.printStackTrace();}}if (connection!=null){try {connection.close();} catch (SQLException throwables) {throwables.printStackTrace();}}}}
}

4、JDBC对象详解

4.1、Class.forName(“com.mysql.jdbc.Driver”);

查看源码发现:在com.mysql.cj.jdbc.Driver类中存在静态代码块

static {try {java.sql.DriverManager.registerDriver(new Driver());} catch (SQLException E) {throw new RuntimeException("Can't register driver!");}
}

mysql5之后的驱动jar包可以省略注册驱动的步骤

5.x

Class.forName("com.mysql.jdbc.Driver");

8.x

Class.forName("com.mysql.cj.jdbc.Driver");

4.2、DriverManager(数据库连接对象)

方法声明 功能介绍
Connection getConnection(String url, String user, String password) 通过连接字符串和用户名,密码来获取数据库连接对象

5.x url

String url="jdbc:mysql://localhost:3306/test";

8.x url

String url="jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=utf-8&useSSL=false";

4.3、Connection(数据库连接对象)

方法声明 功能介绍
Statement createStatement() 创建 SQL语句执行对象
PreparedStatement prepareStatement(String sql) 创建 SQL语句执行对象(防注入)

4.4、Statement(执行sql对象)

方法声明 功能介绍
boolean execute(String sql) 可以执行任意的sql语句
int executeUpdate(String sql) 执行DML(insert、update、delete)DDL(create,alter、drop)返回值:影响的行数,可以通过这个影响的行数判断DML语句是否执行成功
ResultSet executeQuery(String sql) 执行DQL(select)语句

4.5、ResultSet(结果集对象)

方法声明 功能介绍
boolean next() 游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则返回true
Xxx getXxx(参数): 获取数据,Xxx:代表数据类型(int:列的编号,String:列名称)

5、抽取JDBC工具类

url=jdbc:mysql://localhost:3306/test
user=root
password=blingbling123.
driver=com.mysql.jdbc.Driver
public class JDBCtool {private static String urls;private static String user;private static String password;private static String driver;static {Properties properties=new Properties();ClassLoader classLoader=JDBCtool.class.getClassLoader();URL url=classLoader.getResource("connection.properties");String path=url.getPath();try {properties.load(new FileReader(path));} catch (IOException e) {e.printStackTrace();}urls=properties.getProperty("url");user=properties.getProperty("user");password=properties.getProperty("password");driver=properties.getProperty("driver");try {Class.forName(driver);} catch (ClassNotFoundException e) {e.printStackTrace();}}public static Connection getconnection() throws SQLException {return DriverManager.getConnection(urls,user,password);}public static void close(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet){if (resultSet!=null){try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}}if (preparedStatement!=null){try {preparedStatement.close();} catch (SQLException e) {e.printStackTrace();}}if (connection!=null){try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}
}
public class Test {public static void main(String[] args) throws SQLException {Connection connection = JDBCtool.getconnection();String sql="select * from user";PreparedStatement preparedStatement = connection.prepareStatement(sql);ResultSet resultSet = preparedStatement.executeQuery(sql);while (resultSet.next()){System.out.println(resultSet.getString("username"));}JDBCtool.close(connection,preparedStatement,resultSet);}
}

Java JDBC篇1——初识JDBC相关推荐

  1. JAVA WEB篇1——初识JAVAWEB

    JAVA WEB篇1--初识JAVAWEB JavaWeb主要指使用Java语言进行动态Web资源开发技术的统称,是解决相关Web互联网领域的技术总和 1.Http协议 HTTP协议(HyperTex ...

  2. 大数据笔记16—java基础篇12(JDBC 、连接池、事务)

    目录 JDBC jdbc概述 jdbc入门案例 API详解 jdbc工具类 预编译执行平台 1.SQL注入问题(安全问题) 2API详解:预处理对象(PreparedStatement) 使用连接池重 ...

  3. Java JDBC篇4——数据库连接池

    Java JDBC篇4--数据库连接池 1.DBCP 1.1.依赖jar包 官网:https://mvnrepository.com/artifact/org.apache.commons/commo ...

  4. Java JDBC篇3——JDBC事务

    Java JDBC篇3--JDBC事务 1.事务方法 方法声明 功能介绍 void setAutoCommit(boolean autoCommit) 参数是 true 或 false 如果设置为 f ...

  5. Java JDBC篇2——JDBC增删查改

    Java JDBC篇2--JDBC增删查改 url=jdbc:mysql://localhost:3306/test user=root password=blingbling123. driver= ...

  6. Java基础篇:JDBC核心技术

    文章目录 第1章:JDBC概述 1.1 数据的持久化 1.2 JDBC介绍 1.3 JDBC程序编写步骤 第2章:获取数据库连接 2.1 要素一:Driver接口实现类 2.1.1 Driver接口介 ...

  7. java jdbc 教程_java JDBC系列教程之JDBC类的简析与JDBC的基础操作

    什么是JDBC? 概念:JAVA Database Connectivity Javas数据库连接,Java语言操作数据库接口,然后由各个数据库厂商去实现这个接口,提供数据库驱动java包,我们可以使 ...

  8. linux5.4+resin4.0.14+jdk1.6+JDBC篇

    linux5.4+resin4.0.10+jdk1.6+JDBC篇.docx Smle 版权所有 联系方式QQ317362607 以下内容都是本人亲身实践得来的经验,如果有误请联系我,加以改正,互相学 ...

  9. 双表查询java代码_什么是JDBC?Java数据库连接性简介

    JDBC(Java数据库连接性)是Java API,用于管理与数据库的连接,发出查询和命令以及处理从数据库获得的结果集.JDBC在1997年作为JDK 1.1的一部分发布,是为Java持久层开发的首批 ...

最新文章

  1. wamp环境下安装imagick扩展
  2. c语言课件 文件,C语言课件--文件.ppt
  3. Metasploit发布了新版本5.0.83
  4. 【集训队互测2015】最大异或和
  5. Leet Code题解 - 1559. Detect Cycles in 2D Grid 检测二维无向图中的环
  6. Hive报错:Exception in thread main java.lang.Incom。。。。 Class com.google.common.collect.ImmutableSotil
  7. 成功人士高效率的工作法
  8. MiniDao1.7.1 版本发布,轻量级Java持久化框架
  9. golang 单协程和多协程的性能测试
  10. 个人总结 超详细 windows10下载与安装
  11. 五子棋游戏开发六子棋游戏开发
  12. html a标签链接 点击下载文件
  13. PPP项目群管理模式的实践探索——以浙江交工富阳PPP项目群为例
  14. 晶体管介绍工作原理与历史
  15. jQuery教程(整理自W3CSchool)(第一部分)
  16. SSD掉电保护也是一门艺术
  17. 企业的财务部门为什么要用内网即时通讯软件
  18. 姬魔恋战纪服务器维护,《姬魔恋战纪》11月7日更新公告
  19. 这竟然不是阿汤哥?这个「真的吓人」视频火爆全网
  20. Primavera P6打补丁patch,从19.12.0.0升级到19.12.11.0

热门文章

  1. ruby array_Ruby中带有示例的Array.fill()方法(1)
  2. 离散数学和组合数学什么关系_关系类型| 离散数学
  3. Java Hashtable containsValue()方法与示例
  4. lvs负载均衡—DR模式
  5. c语言怎么写星星代码,C语言打印星星的问题
  6. avr uart打印_AVR | 在16x2 LCD上打印HELLO WORLD
  7. Java LinkedList公共int indexOf(Object o)方法(带示例)
  8. synchronized 中的 4 个优化,你知道几个?
  9. HashMap 为什么会导致 CPU 100%?文章看不懂?来看这个视频吧!——面试突击 006 期...
  10. 面试突击 005 | Redis 是如何实现高可用的?它的实现方式有哪些?「视频版」