简单了解JDBC
文章目录
1.什么是JDBC
1.1 概念
JDBC(java database connectivity)是sun公司为了简化和统一java连接数据库,定义的一套规范(API,接口). 它可以为多种关系数据库提供统一访问.
1.2 JDBC与数据库的关系
接口(JDBC)与实现(驱动jar包)的关系.各数据库厂商需要定义实现类(jar包)实现JDBC接口.
1.3 使用JDBC的好处
可以使用统一的一套Java代码操作所有的关系型数据库
- 在没有JDBC之前,java连接各数据库是这样的.
2.在有了JDBC之后,java连接各数据库是这样的.
2.JDBC API详解
2.1 java.sql.Drivermanager
- registerDriver(Driver driver): 注册驱动
注册mysql驱动:
Class.forName("com.mysql.jdbc.Driver");
注册Oracle驱动:
Class.forName("oracle.jdbc.driver.OracleDriver");
- getConnection(String url,String user,String password):与数据库建立连接
2.2 java.sql.Connection接口
接口的实现在数据库驱动中,所有与数据库交互都是基于连接对象的.
DriverManager.getConnection(url,user,password)
方法获得Connection接口实现类对象,连接MySql数据库.
常用方法:
-
Statement createStatement()
创建一个 Statement 对象来将 SQL 语句发送到数据库. -
PreparedStatement prepareStatement(String sql)
创建预编译执行sql语句的对象.3.
preparecall(sql)
创建执行存储过程的callableStatement
对象.4.
setAutoCommit(boolean autoCommit)
设置事物是否自动提交.5.
commit()
在链接上提交事务6.
rollback()
在链接上回滚事务
2.3 java.sql.Statement接口
用于执行静态SQL语句并返回它所生成结果的对象.
三种Statement
类:
Statement
: 由CreateStatement
创建,用于发送简单的SQL语句(不带参数).PreparedStatement
: 继承Statement
接口,由preparedStatement
创建,用于发送含有参数的SQL语句(防止SQL注入问题).CallableStatement
: 继承PreparedStatement
接口,由方法preparedCall
创建,用于调用存储过程.
常用Statement()
方法:
-
ResultSet executeQuery(String sql)
根据查询语句返回结果集。只能执行select语句。 -
int executeUpdate(String sql)
根据执行的DML(insert update delete
)语句,返回受影响的行数。 -
boolean execute(String sql)
此方法可以执行任意sql语句。返回boolean值.true
: 执行select
有查询的结果false
: 执行insert, delete,update
-
addBatch(String sql) 把多条语句放到一个批处理中.
-
executeBatch():向数据库发送一批sql语句执行.
2.4 java.sql.ResultSet接口
- 封装结果集,查询结果表的对象
- 提供一个游标,默认游标指向结果集第一行之前.
- 调用一次next(),游标向下移动一行.
- 提供一些get方法.
ResultSet
接口常用API
-
boolean next();
将光标从当前位置向下移动一行 -
int getInt(int colIndex)
以int
形式获取ResultSet
结果集当前行指定列号值 -
int getInt(String colLabel)
以int
形式获取ResultSet
结果集当前行指定列名值 根据列名来获取 -
float getFloat(int colIndex)
以float
形式获取ResultSet
结果集当前行指定列号值 -
float getFloat(String colLabel)
以float
形式获取ResultSet
结果集当前行指定列名值 -
String getString(int colIndex)以String
形式获取ResultSet
结果集当前行指定列号值 -
String getString(String colLabel)以String
形式获取ResultSet
结果集当前行指定列名值 -
Date getDate(int columnIndex)
以Date
形式获取ResultSet
结果集当前行指定列号值 -
Date getDate(String columnName)
以Date
形式获取ResultSet
结果集当前行指定列名值 -
void close()
关闭ResultSet
对象
3.使用JDBC操作数据库练习
注册驱动---->建立连接---->创建执行SQL语句---->处理执行结果---->释放资源
对数据库有增删改查等操作,我们这里执行查询操作演示,代码实现及操作步骤如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcDemo {
public static void main(String[] args) throws Exception {
//查询数据库
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//获取连接(连接数据库)
//连接数据库路径
String url = "jdbc:mysql://localhost:3306/web17";
String user = "root";
String password = "root";
//2.建立连接
Connection connection = DriverManager.getConnection(url, user, password);
//3.创建执行sql语句的对象
Statement statement = connection.createStatement();
//4.执行sql语句,处理结果
String sql = "select * from user ";
ResultSet resultSet = statement.executeQuery(sql);
while(resultSet.next()){
System.out.println(resultSet.getInt("id"));
System.out.println(resultSet.getString("username"));
System.out.println(resultSet.getString("password"));
System.out.println(resultSet.getString("nickname"));
System.out.println("==========");
}
//5.释放资源
if(resultSet != null){
resultSet.close();
}
if (statement != null){
statement.close();
}
if(connection != null){
connection.close();
}
}
}
}
if (statement != null){
statement.close();
}
if(connection != null){
connection.close();
}
}
}