JDBC
数据库驱动,
SUN公司为了简化开发人员的(对数据库的统一)操作,提供了一个java操纵数据库的规范,这些规范的具体实现由厂商实现,我们只需要掌控JDBC接口的操作即可
java.sql
javax.sql
下面需要一些包
https://search.maven.org/
去maven那里下载
第一个JDBC程序
注意在项目中添加依赖
package jdbc;
import com.mysql.cj.jdbc.Driver;
import java.sql.*;
public class firstdemo {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//DriverManager.registerDriver(new Driver());
//DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
//2.用户信息
String url = "jdbc:mysql://localhost:3306/tyblog?useSSL=true&useUnicode=true&characterEncoding=utf8";
String username = "root";
String password = "123456";
//3.链接成功,数据库对象
Connection connection = DriverManager.getConnection(url, username, password);
//4.执行SQL的对象
Statement statement = connection.createStatement();
//5.执行SQL对象去执行SQL
String sql = "select* from user";
ResultSet resultSet = statement.executeQuery(sql);
while(resultSet.next()){
System.out.println(resultSet.getObject(1));
}
//6.释放连接
resultSet.close();
statement.close();
connection.close();
}
}
步骤总结:
- 加载驱动
- 连接数据库DriverManger
- 获得执行sql的对象Statement
- 获得返回的结果集
- 释放连接
解释
Class.forName("com.mysql.cj.jdbc.Driver");
//等同于
//DriverManager.registerDriver(new Driver());
//DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
//connection代表数据库
//数据库设置自动提交
//事务提交
//事务滚回
下面是Driver的源码
Driver
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
public Driver() throws SQLException {
}
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
}
因为写在静态块内,所以是可以直接加载来。
URL
String url = "jdbc:mysql://localhost:3306/tyblog?useSSL=true&useUnicode=true&characterEncoding=utf8";
// 协议://主机地址:端口号/数据库名?参数1&参数2&参数3
//mysql默认端口是3306,oralce是1521
//mysql的协议是jdbc:mysql;oracle是jdbc:oracle
Statement执行SQL对象 PrepareStatement执行SQL对象
String sql = "select* from user";
statement.executeQuery(sql);//查询操作返回ResultSet
statement.execute(sql);//执行任何SQL
statement.executeUpdate(sql);//更新、插入、删除都是用这个,返回一个受影响的行数
ResultSet查询的结果集:封装了所有的查询结果获得指定的数据类型。
String sql = "select* from user";
ResultSet resultSet = statement.executeQuery(sql);
resultSet.getInt();
resultSet.getObject();
resultSet是光标设置的,
有以下函数可以移动光标至最后或最前
resultSet.beforeFirst();//移动到最前面
resultSet.afterLast();//移动到最后面
resultSet.next();//移动到下一个
resultSet.previous();//移动到前一行
resultSet.absolute(row);//移动到后面一个
释放资源
resultSet.close();
statement.close();
connection.close();
statement对象
jdbc中的statement对象用于向数据库发送SQL语句,想完成数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。
statement对象的executeUpdate方法,用于向数据库发送增删改查的sql语句,executeUpdate执行完后,将会返回一个整数(CURD导致数据库改变了几行变化)
statement.executeQuery反法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象
实际中,会把很多信息放到对应的文件中,
比如说专门一个工具包写sql,一个专门的配置类写配置。