一、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. vue 父子组件 基础应用scrollball v-model sync

    # 组件之间通信 可以通过 v-model 子组件可以通过 改变数据来改变父组件的数组  * v-model  子组件需要接受value属性,需要出发this.$emit("input&qu ...

  2. MySQL第三章知识第一部分

    SQL的特点:是一个综合的.功能极强并且简洁容易学的语言. SQL的功能:数据查询.数据操纵.数据定义.数据控制. 数据库系统的主要功能是通过数据库支持的数据语言来实现. 菲关系模型(层次模型.网状模 ...

  3. C结构体与链表

    今天来总结C语言的学习盲点--结构体,为了不显单一,也为了补足作者链表的编程缺陷,特更此博文,总结近段时间的学习成果.话不多说,先上一段代码 struct none{int item; link ne ...

  4. Java多线程详解(转载)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文主要讲了java中多线程的使用方法.线程同步.线程数据传递.线程状态及相应的一些线程函数用 ...

  5. main.c(53): error: #268: declaration may not appear after executable statement in block

    这个问题是在编译STM32的程序时遇到的,这个错误的原因是对于变量的声明不能放在可执行语句后面,必须在主函数开头声明变量.在程序中声明一个变量时,需要在可执行语句之前声明,否则会出现以上错误.

  6. 【分布式锁】04-使用Redisson实现ReadWriteLock原理

    前言 关于读写锁,大家应该都了解JDK中的ReadWriteLock, 当然Redisson也有读写锁的实现. 所谓读写锁,就是多个客户端同时加读锁,是不会互斥的,多个客户端可以同时加这个读锁,读锁和 ...

  7. Core + Vue 后台管理基础框架8——Swagger文档

    1.前言 作为前后端分离的项目,或者说但凡涉及到对外服务的后端,一个自描述,跟代码实时同步的文档是极其重要的.说到这儿,想起了几年前在XX速运,每天写完代码,还要给APP团队更新文档的惨痛经历.给人家 ...

  8. PowerShell初探

    Windows PowerShell是一种命令行外壳程序和脚本环境,它内置在每个受支持的Windows版本中(Windows 7/Windows 2008 R2和更高版本),使命令行用户和脚本编写者可 ...

  9. python编写“求最大值”

    # 求最大值 def large(*num): # 定义一个large函数,函数的参数为可变参数 ma = num[0] # 初始化最大值 for n in num: if ma < n: # ...

  10. hdu3368 dfs 下棋

    两颗黑子之间的白子可以翻装成黑子,两颗白子之间的黑子可以翻转成白子,对于一个给定位置,有八个方向有翻转其他颜色的子的可能.规则之一是下棋的位置一定要能翻转对方的子. 求最优情况:黑子能翻转的白子个数的 ...