jdbc

通过使用JDBC,Java程序可以非常方便地操作各种主流数据库
jdbc访问

在数据库发展历史中,按时间顺序主要出现了如下几种类型的数据库系统。
➢ 网状型数据库
➢ 层次型数据库
➢ 关系数据库
➢ 面向对象数据库
对于关系数据库而言,最基本的数据存储单元就是数据表,因此可以简单地把数据库想象成大量数据表的集合(当然,数据库绝不仅由数据表组成)。

Create Insert Update Delete/drop
CIUD

标准的SQL语句通常可分为如下几种类型。
➢ 查询语句:主要由select关键字完成,查询语句是SQL语句中最复杂、功能最丰富的语句。
➢ DML(Data Manipulation Language,数据操作语言)语句:主要由insert、update和delete三个关键字完成。
➢ DDL(Data Definition Language,数据定义语言)语句:主要由create、alter、drop和truncate四个关键字完成。
➢ DCL(Data Control Language,数据控制语言)语句:主要由grant和revoke两个关键字完成。
➢ 事务控制语句:主要由commit、rollback和savepoint三个关键字完成。
数据库对象

DCL语句用于为数据库用户授权,或者回收指定用户的权限,通常无须程序员操作

操作

sql语句

操作流程

  1. 通过DriverManager获取数据库连接
Connection cn = DriverManager.getConnection("jdbc:mariadb://localhost:3306/test?user=ajian&password=123456");
  1. 通过Connection对象创建Statement对象
Statement sd = cn.createStatement();
  1. 使用Statement执行SQL语句。
    //   executeUpdate():主要用于执行DML和DDL语句。执行DML语句返回受SQL语句影响的行数,执行DDL语句返回0。
    //   executeQuery():只能执行查询语句,执行后返回代表查询结果的ResultSet对象。
    
    //DDL   create /drop   /alter     成功0        
    //DML   inster /update /delete    受影响行数
    
    var result = sd.executeUpdate("insert into user(user_name, user_passwd,user_email,user_status) values (\"safaffa\",\"assss\",\"ajian@email.com\",0 )");//ddl

  1. 操作结果集 如果执行的SQL语句是查询语句,则执行结果将返回一个ResultSet对象,该对象里保存了SQL语句查询的结果。
//ResultSet对象主要提供了如下两类方法。

// next()、previous()、first()、last()、beforeFirst()、afterLast()、absolute()等移动记录指针的方法。返回boolean值确定是否有效

// getXxx()方法获取记录指针指向行、特定列的值。该方法既可使用列索引作为参数,也可使用列名作为参数。使用列索引作为参数性能更好,使用列名作为参数可读性更好。
        
var res = sd.executeQuery("select * from user");
 while (res.next()) {
            System.out.println(res.getInt(1) + "  " + res.getString(2) + "  " + res.getString(3) + "  " + res.getString(4));
 }
//显示结果
//10001  asd  asd  456@email.com
//10002  99  922  aw
//10003  129  922  aw
  1. 回收数据库资源,包括关闭ResultSet、Statement和Connection等资源。
    res.close();//关闭ResultSet
    sd.close();//关闭Statement
    cn.close();//关闭Connection

附操作源码

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

public class ConnectTest {
//    static Driver driver = new Driver();

    public static void main(String[] args) throws SQLException {

        //通过DriverManager获取数据库连接
        Connection cn = DriverManager.getConnection("jdbc:mariadb://localhost:3306/test?user=ajian&password=123456");
        System.out.println(cn.toString());

        //通过Connection对象创建Statement对象
        Statement sd = cn.createStatement();

        //使用Statement执行SQL语句。
        //   executeUpdate():主要用于执行DML和DDL语句。执行DML语句返回受SQL语句影响的行数,执行DDL语句返回0。
        //   executeQuery():只能执行查询语句,执行后返回代表查询结果的ResultSet对象。
        //DML   inster /update /delete    受影响行数
        //DDL   create /drop   /alter     成功0
        var result = sd.executeUpdate("insert into user(user_name, user_passwd,user_email,user_status) values (\"safaffa\",\"assss\",\"ajian@email.com\",0 )");
        System.out.println(result);//返回1  受影响行数

        //操作结果集 如果执行的SQL语句是查询语句,则执行结果将返回一个ResultSet对象,该对象里保存了SQL语句查询的结果。
        var res = sd.executeQuery("select * from user");
        //ResultSet对象主要提供了如下两类方法。
        //➢ next()、previous()、first()、last()、beforeFirst()、afterLast()、absolute()等移动记录指针的方法。
        //➢ getXxx()方法获取记录指针指向行、特定列的值。该方法既可使用列索引作为参数,也可使用列名作为参数。使用列索引作为参数性能更好,使用列名作为参数可读性更好。
        while (res.next()) {
            System.out.println(res.getInt(1) + "  " + res.getString(2) + "  " + res.getString(3) + "  " + res.getString(4));
        }

//                ⑥ 回收数据库资源,包括关闭ResultSet、Statement和Connection等资源。
        res.close();
        sd.close();
        cn.close();

    }


}