JDBC技术

JDBC(Java Database Connectivity)是一套用于执行SQL语句的Java API(主要位于 java.sql包中),应用程序通过这套API可以连接到数据库,并使用SQL语句对数据库中的数据进行增删改查等操作。

JDBC规范(掌握四个核心对象)

  DriverManager:用于注册驱动

  Connection: 表示与数据库创建的连接

  Statement: 操作数据库sql语句的对象

  ResultSet: 结果集或一张虚拟表

开发一个JDBC程序的准备工作:

> JDBC规范在哪里:

 JDK中:

java.sql.*;

javax.sql.*;

> 数据库厂商提供的驱动:jar文件

  *.jar

 

 开发一个JDBC程序

过程:

  1.加载驱动或注册驱动

 DriverManager.registerDriver(new com.mysql.jdbc.Driver());
 Class.forName("com.mysql.jdbc.Driver");

  2.通过DriverManager获取数据库连接

Connection conn = DriverManager.getConnection(String url, String user, String pwd);

url:表示连接数据库的URL地址
user:登录数据库的用户名
pwd:用户密码

  3.通过Connection对象获取Statement对象

三种方式:

(1)creatStatement():创建基本的Statement对象。

(2)prepareStatement(): 创建PreparedStatement对象。

(3)prePareCall(): 创建CallableStatement对象。

Statement stmt = conn.createStatement();

  4.使用Statement执行SQL语句

所有的Statement都有以下三种执行SQL语句方法。

(1)execute(): 可以执行任何的SQL语句。

(2)executeUpdate(): 主要用于执行DML(数据操作语言INSERT,UPDATE,DELETE)和DDL(数据定义语言CREATE,ALTER,DROP)语句。执行DML语句是,返回受SQL语句影响的行数,执行DDL语句返回0.

(3)executeQuery(): 通常执行查询语句,执行后返回代表结果集的ResultSet对象。

//执行sql语句,并返回结果
ResultSet rs = stmt.executeQuery("select * from users");

  5.操作ResultSet结果集

如果执行的SQL语句是查询语句,则执行记过返回一个ResultSet对象,该对象中保存了SQL语句的查询结果。程序可以通过操作该ResultSet对象取出执行结果。

  6.关闭连接并释放资源

每次操作数据库结束后都要关闭数据库连接,释放资源,包括关闭ResultSet、Statement和Connection等资源。

示例:

create database day06;
use day06;

create table users(
    id int primary key auto_increment,
    name varchar(40),
    password varchar(40),
    email varchar(60),
    birthday date
)character set utf8 collate utf8_general_ci;

insert into users(name,password,email,birthday) values('zs','123456','zs@sina.com','1980-12-04');
insert into users(name,password,email,birthday) values('lisi','123456','lisi@sina.com','1981-12-04');
insert into users(name,password,email,birthday) values('wangwu','123456','wangwu@sina.com','1979-12-04');
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

//用JDBC技术实现查询数据库数据,并显示在控制台中
public class Demo1 {
    public static void main(String[] args) throws Exception{
        //1 注册驱动
    //    DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        Class.forName("com.mysql.jdbc.Driver");
        //2 获取连接connection
        Connection conn = DriverManager.getConnection("jdbc:mysql://lacalhost:3306/day06", "root", "root");
        //3 得到执行sql语句的对象statement
        Statement stmt = conn.createStatement();
        //4 执行sql语句,并返回结果
        ResultSet rs = stmt.executeQuery("select * from users");
        //5 处理结果
        while(rs.next()){
            System.out.println(rs.getObject(1));
            System.out.println(rs.getObject(2));
            System.out.println(rs.getObject(3));
            System.out.println(rs.getObject(4));
            System.out.println(rs.getObject(5));
            System.out.println("------------");
        }       
        //6 关闭资源
        conn.close();
        stmt.close();
        rs.close();
    }
}

注意:

1.注册驱动

虽然使用DriverManager.registerDriver(new com.mysql.jdbc.Driver())方法可以完成注册,但此方法会使数据库驱动被注册两次,且强烈依赖数据库的驱动jar。这是因为Driver类的源码中,已经在静态代码块中完成了数据库驱动注册。所有为了避免数据库驱动重复注册,只需要在程序中使用Class.forName()方法加载驱动即可。

2.释放资源

每次操作数据库结束后都要及时关闭数据库资源,释放连接占用的数据库和JDBC资源,以免影响系统的运行速度。为了保证资源的释放,在java程序中,应该将最终必须要执行的操作放在finally代码块中。

                                                                                                                                                                                                                                                                                                                     2018-09-20 21:45:41

原文地址:https://www.cnblogs.com/qqiua/p/9683526.html