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入门的更多相关文章

  1. JDBC快速入门

    /** * JDBC快速入门: * 1.导入jar包 数据库驱动 * 2.注册驱动 * 3.获取数据库连接对象 Connection * 4.定义sql语句 * 5.获取发送执行sql语句的对象 St ...

  2. Java学习笔记36(jdbc快速入门)

    JDBC: Java DataBase Connectivity 是java程序连接存取数据库的应用程序接口 (是sun公司的程序员定义的一套操作数据库的规则,然后下面的各个公司如:mysql,sql ...

  3. Java学习:JDBC快速入门

    本节类容 JDBC基本概念 快速入门 JDBC基本概念 概念: Java DataBase Connectivity Java 数据库连接,Java语言操作数据库 JDBC本质: 其实是官方(sun公 ...

  4. JDBC基础:JDBC快速入门,JDBC工具类,SQL注入攻击,JDBC管理事务

    JDBC基础 重难点梳理 一.JDBC快速入门 1.jdbc的概念 JDBC(Java DataBase Connectivity:java数据库连接)是一种用于执行SQL语句的Java API,可以 ...

  5. JAVA数据库编程(JDBC技术)-入门笔记

    本菜鸟才介入Java,我现在不急着去看那些基本的语法或者一些Java里面的版本的特征或者是一些晋级的知识,因为有一点.Net的OOP编程思想,所以对于Java的这些语法以及什么的在用到的时候在去发现学 ...

  6. JDBC快速入门教程

    JDBC是什么? JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据库连接. JDBC库中所包含的API通常与数据库使用于: 连 ...

  7. 十六 Spring的JDBC模版入门,默认连接池

    Spring是EE开发一站式框架,有EE开发的每层的解决方案,Spring对持久层也提供了解决方案:ORM模块和JDBC的模版

  8. JDBC+MySQL入门实战(实现CURD的例子)

    前言 hello我是bigsai,今天咱们进行JDBC+MySQL实战,非常适合初入门的小伙伴打开新的世界.实现一个增删改查(curd)的例子.先点赞再观看.帅哥靓女养成好习惯! 在这个案例进行之前, ...

  9. javaweb学习总结(三十二)——JDBC学习入门

    一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ...

  10. JDBC学习入门

    一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ...

随机推荐

  1. Android设计模式—观察者模式

    装载请标明出处:https://www.cnblogs.com/tangZH/p/11175120.html  观察者模式 说白了,就是一个对发生改变,所有依赖于它的对象也发生改变,这是一对多的关系. ...

  2. error: src refspec test does not match any.

    我在本地创建了新分支test并提交到github上 错误信息如下: error: src refspec test does not match any. error: failed to push ...

  3. phper使用MySQL 针对千万级的大表要怎么优化?

    有需要学习交流的友人请加入交流群的咱们一起,群内都是1-7年的开发者,希望可以一起交流,探讨PHP,swoole这块的技术 或者有其他问题 也可以问,获取swoole或者php进阶相关资料私聊管理即可 ...

  4. Linux下MySQL或MariaDB忘记root密码的解决方法

    1.vim /etc/my.cnf 2.在[mysqld]下添加一行skip-grant-tables,然后保存并退出. 3.重启mysql服务:service mysqld restart. 4.不 ...

  5. Leetcode327: Count of Range Sum 范围和个数问题

    ###问题描述 给定一个整数数组,返回range sum 落在给定区间[lower, upper] (包含lower和upper)的个数.range sum S(i, j) 表示数组中第i 个元素到j ...

  6. 痛苦的 java.net.BindException: Address already in use: connect —— Nacos的坑

    我的dubbo应用, 刚开始的时候,启动一两个是没有问题的, 启动多了就大量出现: -- :: --- [TaskScheduler-] o.s.c.a.nacos.discovery.NacosWa ...

  7. 【zabbix监控】zabbix监控tomcat服务

    服务器配置(zabbix_server) 1. 安装jdk 版本需要1.7以上,我这边安装的是1.8的,可以参考我jdk安装的文章 # 上传到zabbix_server服务端.安装(jdk-8u171 ...

  8. Spring Boot 2.X(十三):邮件服务

    前言 邮件服务在开发中非常常见,比如用邮件注册账号.邮件作为找回密码的途径.用于订阅内容定期邮件推送等等,下面就简单的介绍下邮件实现方式. 准备 一个用于发送的邮箱,本文是用腾讯的域名邮箱,可以自己搞 ...

  9. windows 本地链接 VMware虚拟机 redis服务

    使用本地Windows链接 VMware虚拟机 redis服务 我用的虚拟机系统是:windows Server 2012 先把Redis服务器拷贝到服务器并解压,目录如下 这里仅仅作为演示,所以就不 ...

  10. ABAP分享五 ALV修改单元格并将修改数据更新到数据表中示例1

    *下面的代码是在alv字段中修改字段的内容,点击保存后就可以保存数据至数据表. TABLES: spfli. DATA: wa_fieldcat TYPE lvc_s_fcat ,  " 相 ...