JDBC(概述、Java需要的数据库驱动包下载以及在IDEA中的导入、第一个JDBC程序、提取工具类、常用对象、statement对象详述)

JBDC

概述:

  1. 什么是 JDBC
    Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法,通常说的JDBC是面向关系型数据库的,SUN 公司为了简化开发人员的(对数据库的统一)操作,提供了一个Java操作数据库的规范。
  2. Java需要的数据库驱动包下载地址:多版本的下载地址 点击这里
  3. 在IDEA中导入需要的jar包:
    在这里插入图片描述

第一个JDBC程序

  1. 创建一个测试数据库
CREATE DATABASE jdbcStudy CHARACTER SET utf8 COLLATE utf8_general_ci;
USE jdbcStudy;

CREATE TABLE users(    
  id INT PRIMARY KEY,    
  NAME VARCHAR(40),    
  PASSWORD VARCHAR(40),    
  email VARCHAR(60),    
  birthday DATE 
);

INSERT INTO users(id,NAME,PASSWORD,email,birthday) 
VALUES(1,'zhangsan','123456','[email protected]','1980-12-04'), 
(2,'lisi','123456','[email protected]','1981-12-04'), 
(3,'wangwu','123456','[email protected]','1979-12-04');
  1. 编写Java测试代码
import java.sql.*;

public class JdbcFirstDemo {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {   
        //1. 加载驱动
        Class.forName("com.mysql.jdbc.Driver"); // 固定写法,加载驱动
        //注册驱动:DriverManager.registerDriver(new com.mysql.jdbc.Driver());等同上面的
        
        //2. 用户信息和 url
        String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true";
        String username = "root";
        String password = "123456";
        
        //3. 连接成功,数据库对象  Connection(url,用户,密码)
        Connection connection = DriverManager.getConnection(url, username, password);
        
        //4. 执行SQL的对象 
        Statement statement = connection.createStatement();
        
        //5. 用执行SQL的对象去执行SQL语句
        String sql = "SELECT * FROM users";
        //返回的结果集,结果集中封装了我们全部的查询出来的结果
        ResultSet resultSet = statement.executeQuery(sql); 
        while (resultSet.next()){
            System.out.println("id=" + resultSet.getObject("id"));
            System.out.println("name=" + resultSet.getObject("NAME"));
            System.out.println("pwd=" + resultSet.getObject("PASSWORD"));
            System.out.println("email=" + resultSet.getObject("email"));
            System.out.println("birth=" + resultSet.getObject("birthday"));
            System.out.println("==================================");
        }
        //6、释放连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}
  1. 运行结果:
    在这里插入图片描述
  • 总结:
    1、加载驱动;
    2、编写用户信息和 url;
    3、连接数据库 DriverManager;
    4、获得执行sql的对象 Statement;
    5、获得返回的结果集;
    6、释放资源。
  1. 提取工具类:
    由于编写用户信息和 url、释放资源这两步操作都是固定的,所以我们一般都会单独放到一个配置文件里,然后写一个工具类,使用的时候直接调用即可:
    在 src 下建立资源文件 (db.properties):
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true
username=root
password=123456

工具类(jdbcUtils):

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class jdbcUtils {
    private static String driver = null;
    private static String url = null;
    private static String username = null;
    private static String password = null;

    static {
        try {
            InputStream in = jdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");
            Properties properties = new Properties();
            properties.load(in);

            driver = properties.getProperty("driver");
            url = properties.getProperty("url");
            username = properties.getProperty("username");
            password = properties.getProperty("password");
            //加载驱动
            Class.forName(driver);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //获取连接
    public static Connection getConnecction() throws SQLException {
        return DriverManager.getConnection(url, username, password);
    }
    //释放资源
    public static void release(Connection conn, Statement st, ResultSet rs){
            if (rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (st!=null){
                try {
                    st.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    }
}

当我们编写完这两个后,就可以使用它们进行增删改查:
这里演示一个插入数据操作,其他类似:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class TestInsert {
    public static void main(String[] args) {
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
            try {
                conn = JdbcUtils.getConnection(); //获取数据库连接
                st = conn.createStatement();      //获得SQL的执行对象
                //编写sql语句
                String sql = "INSERT INTO users(id,`NAME`,`PASSWORD`,`email`,`birthday`)" +
                        "VALUES(4,'zhangsan','123456','[email protected]','2020-01-01')";
                int i = st.executeUpdate(sql);
                if (i>0){
                    System.out.println("插入成功!");
                }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JdbcUtils.release(conn,st,rs);
        }
    }
}

常用对象

  1. DriverManager
    管理一组 JDBC 驱动程序的基本服务
//注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//固定写法,加载驱动 
Class.forName("com.mysql.jdbc.Driver");  
//连接
Connection connection = DriverManager.getConnection(url, username, password);
//事务滚回 
connection.rollback(); 
//事务提交
connection.commit(); 
//数据库设置自动提交 
connection.setAutoCommit();
  1. URL
    mysql :" jdbc:mysql://主机地址:端口号(3306)/数据库名?参数1&参数2&参数3 "
String url = "jdbc:mysql://localhost:3306/jdbcstudy? useUnicode=true&characterEncoding=utf8&useSSL=true";
  1. Statement
    执行SQL 的对象
statement.executeQuery(sql); //查询操作返回 ResultSet 
statement.execute();         //执行任何SQL 
statement.executeUpdate();   //更新、插入、删除。返回一个受影响的行数
  1. ResultSet
    查询的结果集:封装了所有的查询结果
// 在不知道列类型的情况下使用
resultSet.getObject();  
// 知道列的类型就使用指定的类型 
resultSet.getString(); 
resultSet.getInt(); 
resultSet.getFloat(); 
resultSet.getDate(); 
resultSet.getObject(); 
...

遍历、指针

resultSet.beforeFirst();  //移动到前面 
resultSet.afterLast();    //移动到后面 
resultSet.next();         //移动到下一个数据 
resultSet.previous();     //移动到前一行 
resultSet.absolute(row);  //移动到指定行
  1. 释放资源
    耗费资源,用完关掉
resultSet.close(); 
statement.close(); 
connection.close();

statement对象详述:

  1. 概述:JDBC中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,通过这个对象向数据库发送增删改查语句即可。
  2. Statement.executeUpdate方法,用于向数据库发送增、删、改的sql语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化);
    Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的 ResultSet对象。
  3. CRUD操作(creat、read、update、delete)
  • creat:数据添加操作
Statement st = conn.createStatement(); 
String sql = "insert into user(….) values(…..) "; 
int num = st.executeUpdate(sql); 
	if(num>0){    
		System.out.println("插入成功!"); 
	}
  • read:数据查询操作
Statement st = conn.createStatement(); 
String sql = "select * from user where id=1"; 
ResultSet rs = st.executeQuery(sql); 
	while(rs.next()){    
		//根据获取列的数据类型,分别调用rs的相应方法映射到java对象中 
	}
  • update:数据修改操作
Statement st = conn.createStatement(); 
String sql = "update user set name='' where name=''"; 
int num = st.executeUpdate(sql); 
	if(num>0){    
		System.out.println(“修改成功!"); 
	}
  • delete:数据删除操作
Statement st = conn.createStatement(); 
String sql = "delete from user where id=1"; 
int num = st.executeUpdate(sql);
	if(num>0){    
		System.out.println(“删除成功!"); 
	}

// 下篇再见…谢谢

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章