JDBC连接以及使用
1、JDBC介绍
- Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
2、JDBC驱动的使用
2.1 配置JDBC驱动
- 首先,自己使用什么数据库,需要先去官网下载jdbc驱动,我在这里使用的mysql,使用的语言是Java,编译器是eclipse。
- 对jdbc驱动进行环境配置
在eclipse中新建一个项目,然后在项目的根目录新建转成存放驱动文件的文件夹,一般命名为lib,然后将自己所用的数据库驱动拷贝到该文件中,之后只需要添加Build Path即可使用.
添加完成之后项目中会有一个这样的文件
3、对数据库进行连接的步骤
JDBC编程6个步骤:
- 1、注册驱动
- 2、获取数据库连接
- 3、获取数据库操作对象
- 4、执行SQL语句
- 5、处理查询结果集
- 6、关闭资源
4 、连接数据库实际使用
其中注册数据库驱动的方法有多种,下边一一介绍
package com.company.jdbc;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/*
* JDBC编程6个步骤:
* 1、注册驱动
* 2、获取数据库连接
* 3、获取数据库操作对象
* 4、执行SQL语句
* 5、处理查询结果集
* 6、关闭资源
*/
public class JDBCTest01 {
public static void main(String[] args) {
Driver driver = null;
Connection conn = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// 1、注册驱动
// 1.1 获取驱动对象
driver = new com.mysql.jdbc.Driver();
// 1.2 注册驱动
DriverManager.registerDriver(driver);
System.out.println("[driver INFO] : " + driver);
// 2、 获取数据库连接
String url = "jdbc:mysql://localhost:3306/j_db";
String user = "root";
String password = "123456";
conn = DriverManager.getConnection(url, user, password);
System.out.println("[conn INFO] : " + conn);
// 3、获取数据库操作对对象
statement = conn.createStatement();
System.out.println("[statement INFO] : " +statement);
// 4、执行SQL语句 : 执行查询语句
String sql = "select emp.ename,emp.job,emp.sal from emp";
resultSet = statement.executeQuery(sql);
System.out.println("[resultSet INFO] : " +resultSet);
/*
// 4、执行SQL语句 : 执行DML语句,增加,更新等操作,如果执行的是增删改操作,则没有第五不对查询集进行处理的步骤
String sql_insert = "INSERT INTO emp VALUES(9527,'Java','CLERK',7902,'1985-12-17',8800,NULL,20)";
// count = statement.executeUpdate(sql_insert);
String sql_update = "UPDATE emp SET ename='Python-Django' WHERE empno=9527";
// count = statement.executeUpdate(sql_update);
String sql_delete = "DELETE FROM emp WHERE ename='Java' AND deptno=20";
statement.executeUpdate(sql_delete);
*/
// 5、处理查询结果集
while(resultSet.next()) {
String ename = resultSet.getString("ename");
String job = resultSet.getString("job");
double sal = resultSet.getDouble("sal");
System.out.println("ename = " + ename + "\t job = " + job + "\t sal = " + sal);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
// 关闭资源
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
5、数据库驱动注册的其他方法
5.1 通过类加载的方式注册驱动
自己定义一个注册驱动的类,将注册驱动的步骤放入该类的静态代码块中
package com.company.jdbc;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Map;
/*
* JDBC编程6个步骤:
* 1、注册驱动
* 2、获取数据库连接
* 3、获取数据库操作对象
* 4、执行SQL语句
* 5、处理查询结果集
* 6、关闭资源
*/
public class JDBCTest03 {
public static void main(String[] args) {
Connection conn = null;
Statement statement = null;
ResultSet resultSet = null;
int count = 0;
try {
// 1、注册驱动:通过类加载的方式创建数据库驱动
Class.forName("com.company.jdbc.RegisterDriver");
// 2、 获取数据库连接
String url = "jdbc:mysql://localhost:3306/j_db";
String user = "root";
String password = "123456";
conn = DriverManager.getConnection(url, user, password);
System.out.println("[conn INFO] : " + conn);
// 3、获取数据库操作对对象
statement = conn.createStatement();
System.out.println("[statement INFO] : " + statement);
// 4、执行SQL语句 : 执行查询语句
String sql = "select emp.ename,emp.job,emp.sal from emp";
resultSet = statement.executeQuery(sql);
System.out.println("[resultSet INFO] : " + resultSet);
// 5、处理查询结果集
while (resultSet.next()) {
String ename = resultSet.getString("ename");
String job = resultSet.getString("job");
double sal = resultSet.getDouble("sal");
System.out.println("ename = " + ename + "\t job = " + job + "\t sal = " + sal);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
/**
* 注册数据库驱动
*
* @author Administrator
*
*/
class RegisterDriver {
static {
// 1.1 获取驱动对象
try {
Driver driver = new com.mysql.jdbc.Driver();
// 1.2 注册驱动
DriverManager.registerDriver(driver);
System.out.println("[driver INFO] : " + driver);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
5.2使用配置文件注册驱动,将驱动信息放在配置文件中
新建一个配置文件,存放注册驱动信息,注册驱动时,只需要从该配置文件中读取配置信息集合;这种方法方便更换数据库是操作,只需要更改配置信息集合,不需要重新编译
新建properties配置文件,改配置文件中的信息是以键值对的形式存在的
server.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/j_db
user=root
password=123456
连接数据库时读取配置文件
package com.company.jdbc;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Map;
import java.util.Properties;
/*
* JDBC编程6个步骤:
* 1、注册驱动
* 2、获取数据库连接
* 3、获取数据库操作对象
* 4、执行SQL语句
* 5、处理查询结果集
* 6、关闭资源
*/
public class JDBCTest04 {
public static void main(String[] args) throws IOException {
// 将参数放到配置文件中
// -------------------从配置文件中读取数据库连接信息
// 使用FileReader读取配置文件
FileReader fileReader = new FileReader("conf/server.properties");
// 创建属性对象
Properties properties = new Properties();
// 通过属性对象的load方法将配置文件的信息加载到内存中生成一个Map
properties.load(fileReader);
// 关闭流
fileReader.close();
// 通过属性对象获取配置文件总的值
String driver = properties.getProperty("driver");
String url = properties.getProperty("url");
String user = properties.getProperty("user");
String password = properties.getProperty("password");
// ------------------使用获取到的参数连接数据库进行操作
Connection conn = null;
Statement statement = null;
ResultSet resultSet = null;
try {
//注册驱动
Class.forName(driver);
// 2、 获取数据库连接
conn = DriverManager.getConnection(url, user, password);
System.out.println("[conn INFO] : " + conn);
// 3、获取数据库操作对对象
statement = conn.createStatement();
System.out.println("[statement INFO] : " + statement);
// 4、执行SQL语句 : 执行查询语句
String sql = "select emp.ename,emp.job,emp.sal from emp";
resultSet = statement.executeQuery(sql);
System.out.println("[resultSet INFO] : " + resultSet);
// 5、处理查询结果集
while (resultSet.next()) {
String ename = resultSet.getString("ename");
String job = resultSet.getString("job");
double sal = resultSet.getDouble("sal");
System.out.println("ename = " + ename + "\t job = " + job + "\t sal = " + sal);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}