1、JDBC是什么?
JDBC,英文全称:Java DataBase Connectivity,中文全称:java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,由一组用Java语言编写的类和接口组成。
2、JDBC能做什么?
简单来说,JDBC 可做三件事:与数据库建立连接、发送和执行操作数据库的语句、处理SQL语句执行结果。
3、Java连接数据库的步骤
(1)加载驱动类
Oracle数据库的驱动类名称为:oracleDriverName = oracle.jdbc.driver.OracleDriver
MySQL数据库的驱动类名称为:mysqlDriverName = com.mysql.jdbc.Driver
//加载驱动类,也可以叫做注册载入驱动
Class.forName(DriverName); //DriverName为驱动类的名称,具体应用时要替换成具体数据库的驱动类名称
//加载MySQL驱动类
Class.forName("com.mysql.jdbc.Driver");
//加载Oracle驱动类
Class.forName("oracle.jdbc.driver.OracleDriver");
(2)创建连接对象
获取连接对象时的三个参数:url、username、password
Oracle数据库:
url = jdbc:oracle:thin:@oracleip:port:dbname (其中oracleip为Oracle数据库所在电脑的ip地址,port为Oracle数据库的端口号默认端口号为1521,dbname 为所使用的数据库名称)
username = scott (用户名称,默认的是Scott,实际应用时,具体名称,具体设置)
password为使用数据库时的密码;
MySQL数据库:
url = jdbc:mysql://mysqlip:port/dbname (其中mysqlip为mysql数据库所在电脑的ip地址,如果mysql数据库安装在主机中,则mysqlip可以写成localhost,post为mysql数据库的端口号,默认端口号为3306,dbname为数据库的名称)
username = root
password为使用数据库时的密码;
//例如如下语句:
//创建连接对象
Connection conn =DriverManager.getConnection(url ,username , password ) ;
//创建和MySQL数据库连接的对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname", "root",
"123456");
在这里可以写个方法对以上两个步骤进行测试:
package sql; //类所在的包
//需要导入的包
import java.sql.Connection;
import java.sql.DriverManager;
public class DbTest {
public static void main(String[] args) {
//获取mysql数据库连接步骤
//第一步:加载驱动类
Class.forName("com.mysql.jdbc.Driver");
//第二步:创建连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/zxdb","root","123456");
//控制台输出数据库连接对象
System.out.println(conn);
}
}
//注意,本段代码为原始代码,里面有异常未处理,请继续向下阅读
观察两种异常的类型:
对原始代码进行异常处理:
package sql; //类所在的包
//需要导入的包
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DbTest {
public static void main(String[] args) {
//获取mysql数据库连接步骤
//第一步:加载驱动类
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//第二步:创建连接对象
Connection conn = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/zxdb","root","123456");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//控制台输出数据库连接对象
System.out.println(conn);
}
}
处理异常:是为了提高代码的健壮性,当程序运行发生异常并被捕获时,根据捕获异常时得到的异常信息,就可以很快定位到出现异常的代码位置。
将驱动类的名称故意写错,观察错误信息:
也可以将获取数据库连接对象用方法(函数)的形式来写,当需要获取数据库连接对象时,直接调用方法(函数)即可,不用每次都写获取数据库连接对象的全部代码。
package sql; //类所在的包
//需要导入的包
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DbTest {
/**
* 函数功能:获取数据库连接对象
* @return 返回一个数据库连接对象
*/
public static Connection getConn(){
//第一步:加载驱动类
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.out.println("驱动类加载失败");
e.printStackTrace();//打印详细的异常信息内容
}
//第二步:创建连接对象
Connection conn = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/zxdb","root","123456");
} catch (SQLException e) {
System.out.println("获取连接对象时出错");
e.printStackTrace();//在控制台输出具体的异常信息内容
}
return conn;
}
public static void main(String[] args) {
Connection conn = getConn(); //调用获取数据库连接对象的函数
System.out.println(conn); //控制台输出数据库连接对象
}
}
(3)创建执行SQL语句的对象
使用数据库连接对象,调用createStatement()方法,创建一个执行SQL语句的对象,即Statement对象;
// 创建执行SQL语句的对象
Statement st = conn.createStatement();
(4)执行SQL语句
executeQuery(String sql)方法:只能执行查询语句,返回一个结果集对象;
executeUpdate(String sql)方法:可执行增、删、改语句及DDL语句,返回执行语句受到影响的记录条数(返回结果为int类型);
//执行查询语句
ResultSet rs = st.executeQuery(sql);
//执行增删改语句和DDL语句
int cnt = st.executeUpdate(sql);
(5)关闭资源
关闭资源的顺序和创建资源的顺序相反,称为“倒关闭”
rs.close(); //关闭结果集对象
st.close(); //关闭执行SQL语句的对象
conn.close(); //关闭连接对象
为了较少报错的几率,最好使用try...catch...判断处理错误;
try {
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (st != null) {
st.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
实例请查看:JDBC操作数据库实例