欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【JDBC】JDBC入门

程序员文章站 2022-05-13 12:17:32
JDBC的入门 搭建开发环境 编写程序,在程序中加载数据库驱动 建立连接 创建用于向数据库发送SQL的Statement对象 从代表结果集的ResultSet中取出数据 断开与数据库的连接,并释放相关资源 新建一个测试用的数据库jdbctest 下载数据库驱动并导入到jdbc项目 下载地址:http ......

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】JDBC入门

编写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

【JDBC】JDBC入门

connection

【JDBC】JDBC入门

statement

【JDBC】JDBC入门

resultset

【JDBC】JDBC入门

jdbc的资源释放

  • jdbc程序运行完后,切记要释放程序在运行过程中,创建的那些与数据库进行交互的对象,这些对象通常是resultset,statement和connection对象。
  • 特别是connection对象,它是非常稀有的资源,用完后必须马上释放,如果connection不能及时、正确的关闭,极易导致系统宕机。connection的使用原则是尽量晚创建,尽量早的释放。