【JDBC】JDBC入门
JDBC的入门
- 搭建开发环境
- 编写程序,在程序中加载数据库驱动
- 建立连接
- 创建用于向数据库发送SQL的Statement对象
- 从代表结果集的ResultSet中取出数据
- 断开与数据库的连接,并释放相关资源
新建一个测试用的数据库jdbctest
create database if not exists jdbctest default character set 'utf8';
use jdbctest;
create table if not exists user(
	uid int unsigned auto_increment key,
	username varchar(20) not null,
	password varchar(20) not null,
	name varchar(20) not null
)engine=innodb charset=utf8;
insert user
values
(null, 'aaa', '111', '张三'),
(null, 'bbb', '222', '李四'),
(null, 'ccc', '333', '王五');
下载数据库驱动并导入到jdbc项目
下载地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java

编写jdbc测试程序(mysql版本为8.0.17)
package demo1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
public class JDBCDemo1 {
	@Test
	/**
	 * JDBC入门程序
	 */
	public void demo1() {
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		try {
			//1.加载驱动
			Class.forName("com.mysql.cj.jdbc.Driver");
			//2.获得连接
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbctest"
					+ "?useSSL=false&serverTimezone=Hongkong&useUnicode=true&characterEncoding=utf-8", "root", "1234");
			//3创建执行SQL语句的对象,并且执行SQL
			//3.1创建执行SQL语句的对象
			String sql = "select * from user";
			stmt = conn.createStatement();
			//3.2执行SQL
			rs = stmt.executeQuery(sql);
			while(rs.next()) {
				int uid = rs.getInt("uid");
				String username = rs.getString("username");
				String password = rs.getString("password");
				String name = rs.getString("name");
				System.out.println(uid + "-" + username + "-" + password + "-" + name);
			}
		} catch (SQLException | ClassNotFoundException e) {
			e.printStackTrace();
		} finally {
            //4.释放资源
			if(rs != null) {
                try {
                    rs.close();
                } catch (SQLException sqlEx) { // ignore
                }
                rs = null;
            }
            if(stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException sqlEx) { // ignore
                }
                stmt = null;
            }
            if(conn != null) {
                try {
                    conn.close();
                } catch (SQLException sqlEx) { // ignore
                }
                conn = null; //垃圾回收机制更早回收对象。
            }
        }
	}
}
JDBC的API
DriverManager

Connection

Statement

ResultSet

JDBC的资源释放
- jdbc程序运行完后,切记要释放程序在运行过程中,创建的那些与数据库进行交互的对象,这些对象通常是ResultSet,Statement和Connection对象。
- 特别是Connection对象,它是非常稀有的资源,用完后必须马上释放,如果Connection不能及时、正确的关闭,极易导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。
【JDBC】JDBC入门的更多相关文章
- JDBC快速入门
		/** * JDBC快速入门: * 1.导入jar包 数据库驱动 * 2.注册驱动 * 3.获取数据库连接对象 Connection * 4.定义sql语句 * 5.获取发送执行sql语句的对象 St ... 
- Java学习笔记36(jdbc快速入门)
		JDBC: Java DataBase Connectivity 是java程序连接存取数据库的应用程序接口 (是sun公司的程序员定义的一套操作数据库的规则,然后下面的各个公司如:mysql,sql ... 
- Java学习:JDBC快速入门
		本节类容 JDBC基本概念 快速入门 JDBC基本概念 概念: Java DataBase Connectivity Java 数据库连接,Java语言操作数据库 JDBC本质: 其实是官方(sun公 ... 
- JDBC基础:JDBC快速入门,JDBC工具类,SQL注入攻击,JDBC管理事务
		JDBC基础 重难点梳理 一.JDBC快速入门 1.jdbc的概念 JDBC(Java DataBase Connectivity:java数据库连接)是一种用于执行SQL语句的Java API,可以 ... 
- JAVA数据库编程(JDBC技术)-入门笔记
		本菜鸟才介入Java,我现在不急着去看那些基本的语法或者一些Java里面的版本的特征或者是一些晋级的知识,因为有一点.Net的OOP编程思想,所以对于Java的这些语法以及什么的在用到的时候在去发现学 ... 
- JDBC快速入门教程
		JDBC是什么? JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据库连接. JDBC库中所包含的API通常与数据库使用于: 连 ... 
- 十六 Spring的JDBC模版入门,默认连接池
		Spring是EE开发一站式框架,有EE开发的每层的解决方案,Spring对持久层也提供了解决方案:ORM模块和JDBC的模版 
- JDBC+MySQL入门实战(实现CURD的例子)
		前言 hello我是bigsai,今天咱们进行JDBC+MySQL实战,非常适合初入门的小伙伴打开新的世界.实现一个增删改查(curd)的例子.先点赞再观看.帅哥靓女养成好习惯! 在这个案例进行之前, ... 
- javaweb学习总结(三十二)——JDBC学习入门
		一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ... 
- JDBC学习入门
		一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ... 
随机推荐
- 信通院发布《云计算发展白皮书 (2019年) 》 (附PPT解读)
			来源: 中国信息通信研究院CAICT 为了进一步促进云计算创新发展,建立云计算信任体系,规范云计算行业,促进市场发展,提升产业技术和服务水平.由中国信息通信研究院(以下简称“中国信通院”)主办,中国通 ... 
- Js实现回车登录,监听回车事件
			需求 项目有个回车登录功能,在此记录下 实现 我们应该监听当前登录页面的所有回车操作. $("body").keydown(function () { var yzmStatus ... 
- 【AGC028D】Chord
			Problem Description 给定一个圆,圆上均等地放着 \(2n\) 个点,已有 \(k\) 对点之间连好了边,从中选择剩下 \(n-k\) 对点随意连边. 求所有连边方案中,联通块的个数 ... 
- python函数编程-装饰器decorator
			函数是个对象,并且可以赋值给一个变量,通过变量也能调用该函数: >>> def now(): ... print('2017-12-28') ... >>> l = ... 
- PHP  日期之间所有日期
			/** * 获取起止日期之间所有日期 * @param $sdate * @param $edate * @return array */ function get_dates($sdate, $ed ... 
- 从0系统学Android--3.2四种基本布局
			从0系统学Android--3.2四种基本布局 本系列文章目录:更多精品文章分类 本系列持续更新中.... 3.3 系统控件不够用?创建自定义控件 上一节我们学习了 Android 中的一些常用的控件 ... 
- hadoop搭建的前期准备
			这个hadoop的搭建是以比赛前的练习为目的的,所以我直接以root用户来搭建hadoop,主要也是方便我自己以后复习用的 需要的软件:vmware15.5,xshell6,xftp6,jdk Lin ... 
- 清除Windows系统图标缓存
			如果改变程序图标重新编译之后看到的图标并未改变,这可能不windows缓存了之前的图标导致的,需要清除Window的图标缓存来显示正确的图标. 下面是清除Windows系统图标缓存的批处理代码: re ... 
- win10+Ubuntu16.04双系统下深度学习环境的搭建
			环境零零碎碎地搭了三四天,虽然碰到各种问题,但还是搭建好了,自己整理记录下,同时也算给有需要的人一些指导吧 一.双系统的安装 Win10硬盘管理助手 压缩或者直接利用未使用的空间,空间大小自定,将腾出 ... 
- A:mysql数据库章节导航
			mysql数据库章节导航 mysql5.7的安装(yum和二进制安装) 数据库的基本操作 索引 权限管理 日志管理 逻辑备份mysqldump 物理备份:xtrabackup 主从复制-传统方式 主从 ... 
