JDBC连招详解
JDBC是什么?
Java Data Base Connectivity(Java数据库连接),是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口。
JDBC有什么用?
我们用JAVA就能连接到数据库,并对数据进行增删查改一系列操作。
JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。
JDBC程序编写过程
一、加载JDBC驱动程序
连接数据库之前,需要先将目的数据库的驱动连接到JVM(相关驱动包请至厂商官网下载),这里用的是Mysql的驱动包,将驱动包导入工具软件内
这里通过java.lang.Class类的静态方法forName(String className)实现。
try{
//加载MySql的驱动类
Class.forName("com.mysql.jdbc.Driver") ;
}
catch(ClassNotFoundException e){
System.out.println("找不到驱动程序类 ,加载驱动失败!");
e.printStackTrace() ;
}
二、 连接数据库
要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库的连接。
try{
Connection con = DriverManager.getConnection(url , username , password ) ;
}
catch(SQLException e){
System.out.println("数据库连接失败!");
e.printStackTrace() ;
}
使用DriverManager的静态方法getConnection()来获取该对象,该方法的三个参数为连接数据库所必须的三个要素,即连接的数据库的路径、数据库的用户名和密码。
其中用户名和密码请自行填充
URL:
JDBC URL的标准由三部分组成,各部分间用冒号分隔。
-
协 议: JDBC URL中的协议总是jdbc
-
子协议:子协议用于标识一个数据库驱动程序
-
子名称:一种标识数据库的方法。子名称可以依不同的子协议而变化,用子名称的目的是为了定位数据库提供足够的信息。包含主机名(对应服务端的ip地址),端口号,数据库名
三、创建Statement对象
要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3种类型:
- 执行静态SQL语句。通过Statement实例实现。
- 执行动态SQL语句。通过PreparedStatement实例实现。
- 执行数据库存储过程。通过CallableStatement实例实现。
常用的是PreparedStatement
具体实现:
Statement stmt = con.createStatement() ;
PreparedStatement ps = con.prepareStatement(sql) ;
CallableStatement cs = con.prepareCall("{CALL demoSp(? , ?)}") ;
四、执行Sql语句
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate和execute
- ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句 返回一个结果集(ResultSet)对象。
- int executeUpdate(String sqlString):用于执行INSERT、UPDATE或 DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
- execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句。
ResultSet rs = stmt.executeQuery(String sql) ;
int rows = stmt.executeUpdate(String sql) ;
boolean flag = stmt.execute(String sql) ;
五、结果处理
执行sql语句一般有两种情况,
- 执行更新返回的是本次操作影响到的记录数。
- 执行查询返回的结果是一个ResultSet对象。
ResultSet包含符合SQL语句中条件的所有行,可使用结果集(ResultSet)对象的访问方法获取数据:
if(rs.next()){
String name= rs.getString(1) ;
}
这里只是简单的获取了单行单列的数据,查询多行多列的数据,请进行遍历查询。
六、关闭JDBC
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源
public static void closeResource(Connection conn,Statement ps,ResultSet rs){
try {
if(ps != null)
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
这套不解释连招,你学会了吗?