一、JDBC的概念

Java DataBase Connectivity

从字面意思我们也不难理解,就是用Java语言连接数据库的意思

JDBC定义了Java语言操作所有关系型数据库的规则(接口)。即用同样的语句操作不同类型的关系型数据库。在这里需要注意的是,Sun公司给出了操作数据库的接口,而接口的实现类(数据库驱动jar包)由各大数据库产商自行设计完成!

二、简要概述步骤

  • 导人驱动jar包
  • 注册驱动
  • 获取数据库连接对象 Connection
  • 定义sql语句
  • 获取执行sq1语句的对象 Statement
  • 执行sq1语句,接受ql语句的执行的返回结果
  • 处理sql语句的执行结果

友情小提示:

在导入jar驱动包的时候,可以通过两种方式:

① 在工程下新建一个目录(推荐libs,这样显得规范),将驱动jar包放到libs目录下,然后鼠标右键libs选中add as library

② 将jar驱动包放在指定的位置(推荐本项目的libs目录下),然后依次选中 File==>Project Structure==>Modules===>Dependencies===>+===>jars or directories

三、简单入门程序

import java.sql.*;

public class demo1 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//连接数据库,并返回连接对象 参数分别为数据库url 数据库用户 数据库用户密码
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306","root","123456");
//定义sql执行语句,注意语句末尾不需要加封号
String sql = "show databases";
//获取执行sql语句的对象
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
System.out.println("指定目标存在以下数据库:");
while (resultSet.next()){
System.out.println(resultSet.getString(1));
}
statement.close();
conn.close();
}
}

可以看出成功的执行了

四、知识点详解

1.DriverManager

驱动管理类

功能:

(1)注册驱动

在API文档中,DriverManager类有这样一个方法:

static void registerDriver(Driver driver)  

//注册与给定的驱动程序 DriverManager

但是我们注册驱动时,明明写的是下面这行代码啊:

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

这两行代码是如何关联起来的呢?我们知道:

在java里面任何class都要装载在虚拟机上才能运行。而 Class.forName(xxx.xxx.xxx) 这段代码就是装载类用的(和new 不一样),它返回的是一个类。静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了。而且以后不会再走这段静态代码了。Class.forName(xxx.xxx.xxx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段

那么Class.forName(xxx.xxx.xxx)使用的环境是什么呢?

假如有这样一个字符串变量,它代表一个类的路径(包名.类名),那么我们如何实例化它呢?那就是用这个方法了。注意:

Class object = (Class)Class.forName("pacage.Class").newInstance();

等效于

Class object = new Class();

通过上面的分析,我们大概可以猜测

static void registerDriver(Driver driver)

这行代码应该就是

com.mysql.jdbc.Driver

类中的静态代码段,我们可以验证一下:

在这里,还有一个需要注意的细节,那就是JDBC 5 版本之后,我们不需要自己注册数据库驱动了,为什么呢?因为 jar 驱动包已经帮我们注册了,请看下面的截图:

(2)获取数据库连接对象

注意:

在进行数据库连接时,如果数据库是本机的,且数据库占用的端口是3306,那么连接的代码可以简写成如下格式:

Connection conn = DriverManager.getConnection("jdbc:mysql://","user","passwd");
Connection conn = DriverManager.getConnection("jdbc:mysql:///数据库名","user","passwd");

2.Connection

数据库连接接口

(1)获取执行sql语句的对象

Statement createStatement()

PreparedStatement prepareStatement(String sql)

(2)管理事务

事务:业务操作,一个业务通常有许多步骤,这些步骤只允许同时成功或者同时失败

开启事务:

void setAutoCommit(boolean autoCommit)

参数为 false 时开启事务

提交事务:

void commit()

回滚事务:

void rollback()

3.Statement

执行sql语句类

用于执行静态SQL语句并返回其生成的结果的对象

boolean execute(String sql)

int executeUpdate(String sql) ===> 执行给定的SQL语句,这可能是 INSERT、 UPDATE、 DELETE语句,或者不返回任何内容,如SQL DDL语句的SQL语句,该返回值是影响的行数

DML语句包括 INSERT、 UPDATE、 DELETE语句

ResultSet executeQuery(String sql) ===> 执行DQL(查询)语句,返回ResultSet对象

4.ResultSet

结果集类

5.PreparedStatement

执行sql语句类

用于执行动态SQL语句并返回其生成的结果的对象

Java第三十五天,用JDBC操作MySQL数据库(一),基础入门的更多相关文章

  1. Java学习笔记(十一)——通过JDBC操作mysql数据库

    [前面的话] 时间总是好快,每次都感觉还没有怎么好好去过,对于好多事情,希望自己可以做的更多一点.心情能够好一点,平淡一点就行了. 学习过程中的知识点总结,基础知识,选择阅读. [JDBC定义] 定义 ...

  2. java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据

    package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...

  3. Java进阶(三十五)java int与integer的区别

    Java进阶(三十五)java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象 ...

  4. “全栈2019”Java第三十五章:面向对象

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. Java使用Jdbc操作MySql数据库(一)

    这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...

  6. JDBC操作MySQL数据库案例

    JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...

  7. 原生Jdbc操作Mysql数据库开发步骤

    原生Jdbc操作Mysql数据库开发步骤 原生的Jdbc就是指,不使用任何框架,仅用java.sql包下的方法实现数据库查询等的操作. 下面是开发步骤:        1.导入数据库驱动包       ...

  8. 使用JDBC操作MySQL数据库

    一.JDBC简介 JDBC(Java DataBase Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一的访问,它由一组用Java语言编写的类和接口组 ...

  9. python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy

    内容一览: 1.Python操作MySQL数据库 2.ORM sqlalchemy学习 1.Python操作MySQL数据库 2. ORM sqlachemy 2.1 ORM简介 对象关系映射(英语: ...

随机推荐

  1. 5分钟使用NetModular 完成通讯录 App 开发

    原版连接:https://www.cnblogs.com/shanyou/p/12520894.html NetModular(后文简称NM)是 OLDLI 堪称艺术品级的应用开发框架,它基于经典领域 ...

  2. 一步一步学习S-MSCKF(一)连续时间IMU误差状态运动模型

    1 IMU真实状态运动模型 状态向量: \(x_{I}=\left[{{_{G}^{I}{q(t)}}^{T},{b_{g}(t)}^{T},{^{G}v_{I}(t)}^{T},{b_{a}(t)} ...

  3. Natas33 Writeup(Phar反序列化漏洞)

    Natas33: 又是一个上传文件的页面,源码如下: // graz XeR, the first to solve it! thanks for the feedback! // ~morla cl ...

  4. 二维数组及Arrays工具类

    1.二维数组 概念: 数组中的每一个元素类型都是一维数组 二维数组初始化方式: 静态初始化: 格式: 元素类型[][] 数组名 = new 元素类型[][]{{一维数组1},{一维数组2},{一维数组 ...

  5. Django之模板层细说

    django的模板层,基于我们前面学习的内容,也知道主要语法是{{变量相关}}{%逻辑相关%},那么具体还有哪些内容呢?且听我娓娓道来. 模板层(模板语法) 标签 过滤器 自定义标签,过滤器,incl ...

  6. HDOJ 1301最小生成树的Kruskal算法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1301 将结点的字符信息处理成点信息即可,代码如下: #include<bits/stdc++.h ...

  7. ASP.NET动态网站课程设计——个人网页

    时光荏苒,岁月如梭,又是学期期末时,没错,我又来补课程设计了,hhh. 本文主要讲述如何在用H5+CSS3写的静态网站的基础上,结合ASP.NET动态网站开发,制作一个动态的个人网页. 首先需要熟悉一 ...

  8. 题解 P1278 【单词游戏】

    前言 首先,看到这道题目,我首先想到的是暴搜,通过\(vector\)来搞,代码也是很短的. 这里用了一个类似于分治的思想 把一个大问题转化为小问题 先枚举第一个单词,之后把能拼接在它后面的单词都一个 ...

  9. windows10环境下QtCreator中出现skipping incompatible xxx when searching for xxx 问题解决办法

    windows10环境下QtCreator中出现skipping incompatible xxx when searching for xxx 我再QtCreator中想导入一个外部库时,他提示不匹 ...

  10. springboot使用swagger2创建文档

    一.导入swagger2依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>spri ...