数据库驱动

驱动:声卡,显卡,数据库

image.png

我们的程序会通过数据库驱动,和数据库打交道!

JDBC

SUN 公司为了简化开发人员的(对数据库的统一)操作,提供了一个(Java操作数据库的)规范,JDBC

这些规范的实现由具体的厂商去做

对于开发人员来说,我们只需要掌握JDBC的接口操作即可

第一个JDBC程序

创建数据库

CREATE DATABASE `jdbcstudy` ;
use `jdbcstudy`
CREATE TABLE `users` (
`id` int NOT NULL,
`NAME` varchar(40) DEFAULT NULL,
`PASSWORD` varchar(40) DEFAULT NULL,
`email` varchar(60) DEFAULT NULL,
`birthday` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `users`(id,NAME,PASSWORD,email,birthday)
VALUES(1,'zhansan','123456','zs@sina.com','1980-12-04'),
(2,'lisi','123456','lisi@sina.com','1981-12-04'),
(3,'wangwu','123456','wangwu@sina.com','1979-12-04')

1.创建一个普通项目

2.导入数据库驱动(

)

image.png

3.编写测试代码

package com.lyx.lesson01;

import java.sql.*;

/**
* @author shkstart
* @create 2021-03-16 15:00
*/
public class JdbcFirstDemo {

public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");

//2.用户信息和url
String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEnconding=utf8&useSSL=true&serverTimezone=GMT";

String username = "root";

String password = "312444";

//3.连接成功,数据库对象

Connection conncetion = DriverManager.getConnection(url,username,password);

//4,执行sql对象

Statement statement = conncetion.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("password = " + resultSet.getObject("PASSWORD") );

System.out.println("email = " + resultSet.getObject("email") );

System.out.println("birthday = " + resultSet.getObject("birthday"));

System.out.println("==============================================");
}

resultSet.close();
conncetion.close();
statement.close();
}
}

步骤总结:
1.加载驱动

2.连接数据库 DriverManager

3.获取执行SQL的对象 Statement

4.获得返回的结果集

5.释放连接

DriverManager

//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("com.mysql.jdbc.Driver");//固定写法
Connection connection= DriverManager.getConnection(url,name,password);

//connection代表数据库
//数据库设置自动提交
//事务提交
//事务回滚
connection.rollback();
connection.commit();
connection.setAutoCommit();

Url

String url ="jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&&useSSL=false";

//mysql 默认3306
//协议://主机地址:端口号/数据库名?参数1&参数2&参数3

//Oracle 1521
//jdbc:oralce:thin:@localhost:1521:sid

statement 执行SQL的对象 pPrepareStatement 执行SQL的对象

String sql="SELECT * FROM users";//编写Sql

statement.executeQuery();
statement.execute();
statement.executeUpdate();//更新,插入,删除,返回一个受影响的行数


ResultSet 查询的结果集,封装了所以的查询结果

获得指定的数据类型

ResultSet resultSet = statement.executeQuery(sql);//返回的结果集,结果集中封装了我们全部查询的结果
resultSet.getObject();//在不知道列类型下使用
resultSet.getString();//如果知道则指定使用
resultSet.getInt();


遍历,指针

resultSet.next(); //移动到下一个
resultSet.afterLast();//移动到最后
resultSet.beforeFirst();//移动到最前面
resultSet.previous();//移动到前一行
resultSet.absolute(row);//移动到指定行

释放内存

//6. 释放连接
resultSet.close();
statement.close();
connection.close();//耗资源


JDBC程序最终版(配置文件)

在src目录下新建一个file.properties

user=root
password=123456
url=jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEnconding=utf8&useSSL=true&serverTimezone=GMT
driverClass=com.mysql.cj.jdbc.Driver

image.png

编写类FinalConnect

package com.lyx.lesson01;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;

/**
* @author shkstart
* @create 2021-03-19 18:56
*/
public class FinalConnect {
public static void main(String[] args) throws Exception {
InputStream is = FinalConnect.class.getClassLoader().getResourceAsStream("file.properties");
Properties properties = new Properties();
properties.load(is);
String user = properties.getProperty("user");
String password = properties.getProperty("password");
String url = properties.getProperty("url");
String driverClass = properties.getProperty("driverClass");


Class.forName(driverClass);

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

System.out.println(conn);


}
}