JDBC(1) API详细说明

2023-05-16

目录

    • 一、JDBC概述
      • 1.什么是 JDBC
      • 2 、JDBC API
      • 3.JDBC 程序编写步骤
    • 二、 用使用 JDBC API
      • 1.引入 JDBC 驱动程序
        • 1.1 如何获取 JDBC 驱动程序
        • 1.2 在Java Project 项目应用中添加数据库驱动 jar
      • 2.Driver接口
      • 3.JDBC URL
      • 4.获取数据库链接
      • 5. 操作或访问数据库
        • 5.1Statement
        • 5.2 ResultSet
      • 6.实现增删改查案例代码


一、JDBC概述

1.什么是 JDBC

JDBC(Java Database Connectivity)是一个 独立于特定数据库管理系统( DBMS )、通用的 L SQL 数据库存取和操作的公共接口(一组 API),定义了用来访问数据库的标准 Java 类库,使用这个类库可以以一种标准的方法、方便地访
问数据库资源。

JDBC 的目标是使 Java 程序员使用 JDBC 可以连接任何 提供了JDBC 驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。

在这里插入图片描述

2 、JDBC API

JDBC API 是一系列的接口,它统一和规范了应用程序与数据库的连接、执行 SQL 语句,并到得到返回结果等各类操
作。声明在 java.sql 与 javax.sql 包中。
在这里插入图片描述

3.JDBC 程序编写步骤

在这里插入图片描述

二、 用使用 JDBC API

1.引入 JDBC 驱动程序

1.1 如何获取 JDBC 驱动程序

链接: MySQL 的驱动下载地址

1.2 在Java Project 项目应用中添加数据库驱动 jar

  • 把mysql-connector-java-5.1.36-bin.jar 拷贝到项目中一个目录中
  • 在驱动 jar 上右键–>Build Path–>Add to Build Path

注意: 如果是 Dynamic Web Project(动态的 web 项目)话,则是把驱动 jar 放到 WebContent(有的开发工具叫
WebRoot)目录中的 WEB-INF 目录中的 lib 目录下即可。

2.Driver接口

Java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库
厂商提供不同的实现。

  • MySQL:com.mysql.jdbc.Driver
  • SQLServer:com.microsoft.sqlserver.jdbc.SQLServerDriver
  • Oracle:oracle.jdbc.driver.OracleDriver

3.JDBC URL

URL 编写方式:

  • jdbc:mysql://主机名称:mysql 服务端口号/数据库名称?参数=值&参数=值
  • jdbc:mysql://localhost:3306/testdb
  • jdbc:mysql://localhost:3306/testdb ?useUnicode=true&characterEncoding=utf8
  • jdbc:mysql://localhost:3306/testdb?user=root&password=123456

Oracle9i:

  • jdbc:oracle:thin:@主机名称:oracle 服务端口号:数据库名称
  • jdbc:oracle:thin:@localhost:1521:testdb

SQLServer

  • jdbc:sqlserver://主机名称:sqlserver 服务端口号:DatabaseName=数据库名称
  • jdbc:sqlserver://localhost:1433:DatabaseName=testdb

4.获取数据库链接

代码操作:
jdbc.properties

#key=value
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
user=root
password=132465

测试代码:

public static void main(String[] args) throws Exception {
	//预先加载配置文件 jdbc.properties,把配置信息封装到 Properties 对象中
	Properties pro = new Properties();
	
	//ClassLoader 只能加载类路径下的资源文件
	// 如果不是类路径下,只能使用 FileInputStream
	pro.load(ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties"));
	
	//1、加载与注册驱动
	Class.forName(pro.getProperty("driver"));
	//2、获取数据库连接
	// Connection conn = DriverManager.getConnection(pro.getProperty("url"), pro);
	Connection conn = DriverManager.getConnection(pro.getProperty("url"),pro.getProperty("user"),pro.getProperty("password"));
	System.out.println(conn);
}

5. 操作或访问数据库

数据库连接被用于向数据库服务器发送命令和 SQL 语句,并接受数据库服务器返回的结果。
其实一个数据库连接就是一个 Socket 连接。
在 java.sql 包中有 3 个接口分别定义了对数据库的调用的不同方式:

  • Statement:用于执行静态 SQL 语句并返回它所生成结果的对象。
  • PrepatedStatement:SQL 语句被预编译并存储在此对象中,然后可以使用此对象多次高效地执行该语句。
  • CallableStatement:用于执行 SQL 存储过程

5.1Statement

通过调用 Connection 对象的 createStatement() 方法创建该对象
该对象用于执行静态的 SQL 语句,并且返回执行结果
Statement 接口中定义了下列方法用于执行 SQL 语句:

  • int excuteUpdate(String sql):执行更新操作 INSERT、UPDATE、DELETE
  • ResultSet excuteQuery(String sql):执行查询操作 SELECT

5.2 ResultSet

通过调用 Statement 对象的 excuteQuery() 方法创建该对象
ResultSet 对象以逻辑表格的形式封装了执行数据库操作的结果集,ResultSet 接口由数据库厂商实现
ResultSet 对象维护了一个指向当前数据行的 游标,初始的时候,游标在第一行之前,可以通过 ResultSet 对象的
next() 方法移动到下一行
ResultSet 接口的常用方法:

  • boolean next()
  • getXxx(String columnLabel):columnLabel 使用 SQL AS 子句指定的列标签。如果未指定 SQL AS 子句,则标签是列名称
  • getXxx(int index) :索引从 1 开始

6.实现增删改查案例代码

public class TestStatement {
	@Test
	public void testAdd()throws Exception{
		String sql = "INSERT INTO dept(dname,description) VALUES('财务部','负责发钱工作')";
		String url = "jdbc:mysql://localhost:3306/1221db";
		String user = "root";
		String password = "123456";
		Connection conn = DriverManager.getConnection(url, user, password);
		Statement st = conn.createStatement();
		int len = st.executeUpdate(sql);//把 insert,update,delete 都用这个方法
		if(len>0){
			System.out.println("添加成功");
		}else{
			System.out.println("添加失败");
		}
		st.close();
		conn.close();
	}
	
	@Test
	public void testUpdate()throws Exception{
		String sql = "UPDATE dept SET description = '负责发工资、社保、公积金工作' WHERE dname ='财务部'";
		String url = "jdbc:mysql://localhost:3306/1221db";
		String user = "root";
		String password = "123456";
		Connection conn = DriverManager.getConnection(url, user, password);
		Statement st = conn.createStatement();
		int len = st.executeUpdate(sql);//把 insert,update,delete 都用这个方法
		if(len>0){
			System.out.println("修改成功");
		}else{
			System.out.println("修改失败");
		}
		st.close();
		conn.close();
	}

	@Test
	public void testDelete()throws Exception{
		String sql = "DELETE FROM dept WHERE did =2";
		String url = "jdbc:mysql://localhost:3306/1221db";
		String user = "root";
		String password = "123456";
		Connection conn = DriverManager.getConnection(url, user, password);
		Statement st = conn.createStatement();
		int len = st.executeUpdate(sql);//把 insert,update,delete 都用这个方法
		if(len>0){
			System.out.println("删除成功");
		}else{
			System.out.println("删除失败");
		}
		st.close();
		conn.close();
	}

	@Test
	public void testSelect()throws Exception{
		String sql = "SELECT * FROM dept";
		String url = "jdbc:mysql://localhost:3306/1221db";
		String user = "root";
		String password = "123456";
		Connection conn = DriverManager.getConnection(url, user, password);
		Statement st = conn.createStatement();
		ResultSet rs = st.executeQuery(sql);//select 语句用 query 方法
		while(rs.next()){//是否有下一行
			//取这一行的单元格
			int id = rs.getInt(1);
			String name = rs.getString(2);
			String desc = rs.getString(3);
			System.out.println(id+"\t" + name + "\t" + desc);
		}
		rs.close();
		st.close();
		conn.close();
	}
	
	@Test
	public void testSelect2()throws Exception{
		String sql = "SELECT did,dname FROM dept";
		String url = "jdbc:mysql://localhost:3306/1221db";
		String user = "root";
		String password = "123456";
		Connection conn = DriverManager.getConnection(url, user, password);
		Statement st = conn.createStatement();
		ResultSet rs = st.executeQuery(sql);//select 语句用 query 方法
		while(rs.next()){//是否有下一行
			//取这一行的单元格
			int id = rs.getInt("did");
			String name = rs.getString("dname");
			System.out.println(id+"\t" + name);
		}
		rs.close();
		st.close();
		conn.close();
		}
	}
}

如果有收获!!! 希望老铁们来个三连,点赞、收藏、转发
创作不易,别忘点个赞,可以让更多的人看到这篇文章,顺便鼓励我写出更好的博客
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JDBC(1) API详细说明 的相关文章

  • 如何使用 Twitter Api 在单个请求中获取 20 多个列表成员?

    我想让超过 20 个用户在单个请求中使用 twitter api 有什么参数可以指定吗 我正在使用这个APIhttp api twitter com 1 Barelyme Politics members xml cursor 1 http
  • 我可以查看当前登录的 Twitter 用户吗?

    他们没有通过我的网站进行 OAuth 验证 但在该浏览器上登录到 Twitter 有什么办法让我知道他们的 Twitter 用户名吗 饼干 什么 除非某些东西非常糟糕或者 Twitter 明确提供了用于此目的的 API 否则不会 至少不是通
  • 如何在 Google Maps API 中指示语言?

    就像你访问一样maps google com tw or maps google co kr or maps google co jp 您可以看到每个国家 地区都显示自己的语言 我可以在 Google 地图 API 中使用任何属性来动态设置
  • Java:使用PreparedStatement将多行插入MySQL

    我想使用 Java 一次将多行插入 MySQL 表中 行数是动态的 过去我在做 for String element array myStatement setString 1 element 0 myStatement setString
  • 用Java将图像添加到数据库

    我正在尝试将图像添加到 mysql 数据库中的 BLOB 字段 图像大小将小于 100kb 但是我遇到了问题 想知道将这些数据添加到数据库的更好方法是什么 com mysql jdbc MysqlDataTruncation 数据截断 第
  • Android 中的 JDBC 连接

    有没有人在 android 中尝试过 JDBC 连接 因为在 Android 2 3 中支持 JDBC 我必须在没有 Web 服务的情况下连接 Mysql 我已经提出申请 但它给了我错误 public class MysqlConnect
  • 使用 JPype - 如何访问 JDBC 元数据函数

    我在用着杰 德贝API https launchpad net jaydebeapi它使用 JPype 加载 FileMaker 的 JDBC 驱动程序并提取数据 但我也希望能够获取所有表的列表在数据库中 In the JDBC 文档 ht
  • BoneCP 和 Derby - 如何正确关闭

    I have BoneCP CONNECTION POOL CONNECTION POOL getConfig setJdbcUrl jdbc derby database shutdown true Connection connecti
  • mysql jdbc 与 SSL 连接在 tls 握手级别失败

    我们的 mysql 服务器配置为仅接受与 ssl 密码 DHE RSA AES256 GCM SHA384 的连接 我正在使用 java mysql connector java 8 0 15 和 java 8 openjdk 版本 1 8
  • Yammer API 限制

    Yammer Rest api 文档表示 每个应用程序每个用户在 10 秒内最多可以发出 10 个请求 问题 什么是user这里 是为当前经过身份验证的 yammer 用户发出请求的 IP 地址还是承载令牌 如果我们所有的用户都使用相同的外
  • 415 不支持的媒体类型; Angular2 到 API

    我是 Angular 2 的新手 我面临着一个无法找到解决方案的问题 当我尝试从 Angular 2 发布到 API 时 我得到 415 不支持的媒体类型 角度2代码 onSubmit value any console log value
  • Streamlabs API 405 响应代码

    我正在尝试使用Streamlabs API https dev streamlabs com Streamlabs API 使用 Oauth2 来创建应用程序 因此 首先我将使用我的应用程序的用户发送到一个授权链接 其中包含我的应用程序的客
  • Twitter 的推文按钮有回调吗?

    有没有办法在 Twitter 的推文按钮上注册回调 我希望能够跟踪我网站上的哪些特定用户在 Twitter 上发布了链接 我无法添加 onClick 事件 因为它是跨域 iFrame 还有其他想法吗 我见过一种方法 https stacko
  • Booking.com酒店管理API

    我拥有一家酒店 并在 booking com 上查看了 API 因为我想创建自己的前端界面来更新我的酒店房价 房间数 以及通过该 API 上传图片 更新酒店描述 然而 我唯一能找到的是一个 API 供联营公司以一定的价格获取特定位置的酒店等
  • 如何计算选择查询的最佳获取大小

    在 JDBC 中 默认获取大小为 10 但我想当我有一百万行时 这不是最佳获取大小 据我所知 获取大小太低会降低性能 但如果获取大小太高也会降低性能 我怎样才能找到最佳尺寸 这对数据库端有影响吗 它会占用大量内存吗 如果您的行很大 请记住
  • org.apache.derby.jdbc.ClientDriver 在哪里?

    我下载了jar包核心 Apache Derby 数据库引擎 还包括嵌入式 JDBC 驱动程序 10 9 1 0 http mvnrepository com artifact org apache derby derby 但那个罐子不包括
  • Android GCM 服务器的 API 密钥

    我有点困惑我应该为 GCM 服务器使用哪个 API 密钥 在文档中它说使用 android api 密钥 这对我不起作用并且总是给出未经授权的 http developer android com google gcm gs html ht
  • 使用 PHP 和 OAuth 访问 SkyDrive

    我想使用 PHP 访问 skyDrive 我想检索文件和文件夹列表 下载 上传和删除文件 我有一个 microsoft dev clientID 和 clientSecret 有人可以帮助我开始使用 OAuth 连接到 skyDrive 并
  • 是否有 .NET 库或 API 可以与 IIS 配置数据库交互/编辑它?

    或者我是否坚持使用自己的 XML 切割 功能 我想创建一个小型任务托盘应用程序 以便我可以快速将虚拟目录重新指向硬盘上的几个文件夹之一 一点背景 我的开发机器上的代码库有 3 个不同的 svn 分支 Current Production B
  • 为 NFL api 生成访问令牌

    NFL 有一个 API 服务 link https api nfl com docs getting started index html https api nfl com docs getting started index html

随机推荐

  • 打印三角形 | 所有素数

    目录 3 100的所有素数找出来5 5正方形直角三角形反直角三角形正等腰三角形 xff08 金字塔 xff09 倒立等腰三角形 4 61 1 1 1 3 43 1 5 1 7 43 1 9 1 11 43 43 1 n 若n为99 3 10
  • 冒泡排序 | 快速排序 | 线性查找 | 二分查找等

    目录 排序算法 xff1a 冒泡排序排序算法 xff1a 快速排序数组的复制 反转 查询 xff08 线性查找 二分查找 xff09 排序算法 xff1a 冒泡排序 span class token keyword public span
  • 多线程(1/2)

    文章目录 一 多线程概述1 概念1 1 程序 进程 线程1 2 单核cpu和多核cpu1 3 并行和并发 2 优点3 何时需要 二 继承Thread类1 多线程创建的方式一 xff1a 继承于Thread类2 线程常用方法3 线程的优先级4
  • 多线程(2/2)

    文章目录 一 程序安全的单例模式之懒汉式1 通过同步代码块解决懒汉式单例设计模式的线程安全问题2 通过同步方法解决懒汉式单例设计模式的线程安全问题 二 死锁问题1 死锁的理解 2 说明 三 Lock锁方式解决线程安全问题四 线程的通信1 涉
  • 集合框架(5):LinkHashMap | TreeMap | Properties | Collections工具类

    文章目录 一 LinkedHashMap底层实现原理二 TreeMap1 自然排序2 定制排序 三 Properties四 Collections 工具类1 工具类中常用的方法2 代码演示 文章链接Java语法https blog csdn
  • 集合框架(2):List | ArrayList | LinkedList | Vector的底层源码

    文章目录 一 list比较ArrayList LinkedList Vector三者的异同 xff1f List接口常用方法List遍历及常用方法总结 ArrayList源码分析LinkedList源码分析Vector源码分析ArrayLi
  • 集合框架(3):set | HashSet | LinkedHashSet | TreeSet的底层源码

    文章目录 一 Set练习题 xff1a 在list内去除重复数据值 二 HashSet三 LinkHashSet四 TreeSet1 自然排序2 定制排序 文章链接Java语法https blog csdn net weixin 45606
  • 单例设计模式

    目录 一 设计模式1 理解2 常用设计模式 23种经典的设计模式 二 单例设计模式1 概念 xff1a 2 如何实现 xff1f 3 饿汉式和懒汉式的区别4 应用场景 xff1a 三 模板方法的设计模式1 解决的问题2 举例3 应用场景 一
  • PageHelper实现分页详细版、整合SSM应用

    在项目开发中我们经常要实现分页技术 xff0c 传统的开发过于繁琐 xff0c 这里我们讲解MyBatis中引进的PageHelper实现分页 简单易懂 xff0c 便于上手 xff01 xff01 xff01 参照官网 完成以下分页技术的
  • 最详细IDEA 的安装、配置与使用

    目录 IDEA 的安装 配置与使用一 IntelliJ IDEA 介绍1 IntelliJ IDEA 介绍2 官网 xff1a 3 IDEA 的下载地址 xff1a 官网 4 官网提供的详细使用文档 xff1a 二 windows 下载安装
  • 对遗传算法(GA)的一些理解

    目录 1 遗传算法的原理 2 遗传算法的主要流程 3 对遗传算法中的选择 编码 交叉及变异的理解 1 遗传算法的原理 基因以染色体为载体在种群间得以传播 xff0c 而基因在相当程度上决定了个体的表现型 性状 xff0c 这个传播过程常常伴
  • 最详细IDEA 常用配置、布局说明

    目录 一 创建 Java 工程 xff0c 分析页面布局1 设置显示常见的视图2 工程界面展示3 查看项目配置 二 常用配置 以idea 2019为例 1 设置主题2 设置字体大小 xff08 1 xff09 非代码窗口设置UI样式和字体
  • Springboot整合阿里云短信服务

    文章目录 开通阿里云了解阿里云用户权限操作开通阿里云短信服务添加短信模板添加签名 Springboot整合短信到项目中1 创建一个SpringBoot的项目2 导入依赖3 配置文件4 主启动类5 工具类6 控制器7 业务层8 测试 最好有S
  • 使用JS实现表单验证

    目录 表单页面展示FormCheck jsp CSS样式Register css JavaScript代码FormCheck js 效果图展示 平时我们在注册账号的时候经常看到有提示xxx不得法 xff0c 请重新填写字样 xff0c 本文
  • 对Spring深入的理解 | 概念的总结

    一 Spring的概述 官网 xff1a https spring io projects spring framework overview 官方下载地址 xff1a https docs spring io spring docs 4
  • Spring AOP详解

    1 简述 AOP 概念 AOP xff1a Aspect Oriented Program xff0c 面向 方面 切面的编程 xff1b Filter 过滤器 也是一种 AOP AOP 是一种新的方法论 xff0c 是对传统 OOP Ob
  • Spring IOC详解

    一 IOC的基本概念 1 简述 IOC 概念 IOC Invert Of Control xff0c 控制反转 也成为 DI 依赖注入 其思想是反转资源获取的方向 传统的资源查找方式要求组件向容器发起请求查找资源 作为回应 容器适时的返回资
  • Spring 声明式事务

    文章目录 1 回顾事务2 spring的事务管理3 Spring事务的种类4 基于XML的事务配置1 使用说明2 代码如下 5 基于注解的事务配置1 使用说明2 代码如下 6 基于XML和注解的事务配置代码如下 7 64 Transacti
  • Spring 依赖注入详解

    一 IOC 依赖注入 1 什么是Spring的依赖注入 依赖注入 xff0c 是IOC的一个方面 xff0c 是个通常的概念 xff0c 它有多种解释 这概念是说你不用创建对象 xff0c 而只需要描述它如何被创建 你不在代码里直接组装你的
  • JDBC(1) API详细说明

    目录 一 JDBC概述1 什么是 JDBC2 JDBC API3 JDBC 程序编写步骤 二 用使用 JDBC API1 引入 JDBC 驱动程序1 1 如何获取 JDBC 驱动程序1 2 在Java Project 项目应用中添加数据库驱