JDBC
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java编写的类和接口组成。
JDBC为开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够使用java API编写数据库应用程序,并且可跨平台运行,并且不受数据库供应商的限制。
在开发java应用程序时,我们只需正确加载JDBC驱动,正确调用JDBC API,就可以进行数据库访问了。
JDBC API 介绍
DriverManager类:装载驱动程序,并为创建新的数据库连接提供支持。
Connertion接口:负责连接数据库并担任传送数据的任务。
Statement接口:由Connection提供,负责执行sql语句。
ResultSet接口:负责保存和处理Statement执行后所产出的查询结果。
PreparedStatement接口:Statement的子接口,也由Connection产出,同时负责执行sql语句,与Statement接口相比,PreparedStatement接口具有高效性,高安全性,高可读性和高可维护性的优点。
JDBC访问数据库的步骤
1)加载JDBC驱动
使用class.forName()方法将给定的JDBC类加载到Java虚拟机中。
class.ForName("JDBC 驱动类的名称");
2)与数据建立连接
DRiverManger类是JDBC的管理层,作用于用户和驱动程序之间。DriverManager类跟中可用的驱动程序,并在数据库和相应的驱动程序之间建立连接
Connection conn=DriverManager.getConnection(数据连接字符串,数据库用户名,密码);
3)发送SQL语句,并得到返回结果
建立连接,就使用该连接创建Statement接口的对象,并将SQL语句传递给它所连接的数据库,如果是查询操作,将放回类型为ResultSet的结果集,包含执行查询的结果。如果是其他操作,将根据调用方法的不同返回布尔值或操作影响的记录数目。
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("SQL语句");
4)处理返回结果
处理返回结果主要是正对查询操作的结果集,通过循环去除结果集中的每一条数据。
While(rs.next()){
int id=rs.getInt("Id");
String name=rs.getString("name");
System.out.Println(id+name);
}
StateMent接口和ResultSet接口Connection 接口常用方法
方法名称 | 作用 |
void CLose() | 立即释放此Connection对象的数据库和JDBC资源 |
Statement createStatement() | 创建一个Statement对象来将SQL语句发送到数据库 |
PreparedStatement prepareStatement(String sql) | 创建一个PreparedStatement对象来将参数化的SQL语句发送到数据库 |
boolean isClosed() | 查询此Connection对象是否已经被关闭 |
Statement接口常用方法
方法名称 | 作用 |
ResultSet executeQuery(string sql) | 可以执行SQL查询并获取ResultSet对象 |
int executeUpdate(string sql) | 可以执行插入、删除、更新的操作,返回值是执行该操作所影响的行数 |
boolean execute (string sql) | 可以执行任意SQL语句,若结果为ResultSet 对象,则返回True;若不存在结果,返回false |
ResultSet接口常用方法及作用
方法名称 | 作用 |
boolean next() | 将光标从当前位置向下移动一行 |
boolean previous() | 将光标从当前位置向上移动一行 |
void close() | 关闭ResultSet对象 |
int getInt(int columnIndex) | 以int的形式获取结果集当前行指定列号的值 |
int getInt(String columnLabel) | 以int的形式获取结果集当前行指定列名的值 |
float getFloat(int columnIndex) | 以float的形式获取结果当前行指定列号的值 |
float getFloat(String columnLabel) | 以float的形式获取结果当前行指定列名的值 |
String getString(int columnIndex) | 以String的形式获取结果当前行指定列号的值 |
String getString(String columnLabe;) | 以String的形式获取结果当前行指定列名的值 |
int getRow() | 得到光标当前所指的行号 |
boolean absolute(int row) | 光标移动到row指定的行 |
PreparedStatement接口
PreparedStatement接口继承自Statement接口,PreparedStatement比普通Statement对象使用起来更加灵活,更有效率。
PreparedStatement接口常用方法
方法名称 | 作用 |
boolean execute() | 在此PreparedStatement对象执行SQL语句,该语句可以是任何语句。 |
ResultSet executeQuery() | 在此PreparedStatement对象执行SQL语句 并返回该查询生产的ResultSet对象 |
int executeUpdate() | 在此PreparedStatement对象执行SQL语句,该语句必须是一个DML语句,如INSERT、UPDATE、DELETE语句:或者是无返回内容的语句 |
void setInt(int index,int x) | 将指定参数设置为给定Java int 值,设置其他类型参数的方法与此类似。 |
void setObject(int index,Object x) | 使用给定对象设置指定参数的值 |