JDBC常用接口
Driver接口
Driver接口是由数据库厂家提供的,对于java开发者而言,只需要使用Driver接口就可以了。
导包
在编程中要连接数据库,就必须先装载数据库驱动程序,不同的数据库有不同的装载方法.
装载MySQL驱动:Class.forName("com.mysql.jdbc.Driver");
驱动管理(DriverManager接口)
DriverManager接口是JDBC的管理层,作用于用户和驱动之间。
用于管理JDBC驱动的服务类。程序中使用该类的的主要功能是获取Connection对象
是处理驱动和程序之间的桥梁。
连接接口(Connection接口,由DriverManager创建)
Connection与数据库连接,在连接上下文中执行SQL语句并返回结果
Connection代表数据库连接对象,每个Connection代表一个物理连接会话。要想访问数据库,必须先得到数据库连接。
DriverManager的getConnection()
方法建立在JDBC URL中定义的数据库Connection连接上。
连接MySQL数据库:
Connection接口源码:
Statement接口
用于执行sql语句的工具接口。该对象既可以执行DDL,DCL语句,也可以用于执行DML语句,还可以用于执行sql查询。当执行sql查询时,返回查询到的结果集。
(用于执行静态SQL语句 并 返回他所生成的对象。)
常用方法:
execute();
运行语句,返回是否有结果集。
executeQuery();
运行select语句,返回ResultSet结果集(一个容器,下标从1开始)。
executeUpdate();
运行insert、update、delete操作,返回更新的行数。
Statement接口源码:
PreparedStatement接口(最常用)
预编译的Statement对象,PreparedStatement是Statement的子接口,它允许数据库预编译sql语句(这些sql语句通常带有参数),以后每次只改变sql命令的参数,避免数据库每次都需要编译sql语句,无需再传入sql语句,只要为预编译的sql语句传入参数值即可。
继承Statement接口,功能更多更强大。可以预处理,批处理,延迟加载。
ResultSet接口
结果集对象。该对象包含访问查询结果的方法,ResultSet可以通过列索引或列名获得列数据。它包含了如下常用方法来移动记录指针。
返回结果,放在ResultSet容器里面
常用方法:
getString();
getFloat();
getDate();
getBoolean();
等。。。
ResultSet源码:
• boolean next() throws SQLException;
• void close() throws SQLException;
• String getString(int columnIndex) throws SQLException;
• String getString(String columnLabel) throws SQLException;
• boolean getBoolean(int columnIndex) throws SQLException;
※※JDBC的编程步骤(以下步骤都需要捕捉异常)
- 载数据库驱动:
Class.forName(“com.mysql.jdbc.Driver”); //反射机制创建
- 利用
DriverManager.getConnection
建立数据库连接:
Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/数据库名”, “user”,”pwd”);
- 利用 Connection对象执行 SQL 语句并返回它所生成结果的对象Statement:
Statement stmt = conn.createStatement( );
- 利用 Statement 执行 SQL(通过executeQuery执行SQL语句返回到ResultSets容器):
ResultSets rs = stmt.executeQuery(“Select * from Stu”);
- 利用 ResultSet, while循环读取结果集:
rs.getXXX(“fieldName”);
-
依序关闭使用之对象及连接:(原则:先开后关)
这里有个小知识点,当咱们捕捉异常以后,这个关闭连接应该在finally里面书写。 首先先判定是否非空,然后close();
关闭连接。ResultSet --> Statement --> Connection
Statement执行的sql语句主要分为两种:
- 查找(executequery)
- 更新(executeUpdate)包含增删改,insert、update、delete
Resultset是查询的结果,所以他只能用executequery来获取,当获取到多条的时候,要用到循环来获取,判断是否存在下一条用next方法。
释放资源:原则是先开后关
开启的顺序:connection-statement-resultset。
关闭的顺序:resultset-statement-connection。
简单来说:
- 连接MySQL驱动
- 创建数据库连接
- 创建预处理对象
- 根据位置获取查询结果
public class JdbcDao {
public void myJdbc(){
try {
Class.forName("com.mysql.jdbc.Driver"); //加载MySQL驱动
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名称", "user", "pwd"); //创建数据库链接
Statement stmt = conn.createStatement(); //通过connn获取数据库处理对象statement
ResultSet rs = stmt.executeQuery("select * from XXX(SQL查询语句)");//通过stmt的executequery方法来执行sql查询语句,返回结果是resultset
while(rs.next()){ //循环通过rs.next判断是否有下一条
System.out.println(rs.getInt(1));
System.out.println(rs.getString("ename"));
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
JdbcDao jd=new JdbcDao();//创建jdbcdao对象
jd.myJdbc();//调用myjdbc方法
}
}