Java JDBC是一种广泛使用的数据库访问方式,可以连接多种类型的数据库,包括关系型数据库如MySQL、Oracle,以及面向对象数据库如MongoDB等。本文将从入门到精通介绍如何使用Java JDBC连接数据库。
一、基本概念
1. JDBC是什么?
JDBC(Java Database Connectivity)是Java提供的一个标准API,用于连接和操作各种类型的数据库。JDBC提供了统一的接口,使得Java开发者可以使用相同的代码来访问不同类型的数据库,无需重新学习和编写数据库访问代码。
2. JDBC的优点
使用JDBC连接数据库,具有以下优点:
(1)Java语言的跨平台性使得JDBC可以在不同的操作系统上运行;
(2)JDBC提供了面向对象的编程模型,使得开发者可以使用Java编写数据库访问代码;
(3)JDBC提供了丰富的API,支持事务、批处理、元数据等高级功能;
(4)JDBC是Java标准库的一部分,无需额外下载和安装,方便快捷。
二、JDBC连接数据库的过程
1. 加载JDBC驱动
使用JDBC连接数据库前,需要先加载相应的JDBC驱动。JDBC驱动是用于连接和操作具体数据库的Java库,不同类型的数据库需要使用不同的JDBC驱动。
通过以下代码加载MySQL的JDBC驱动:
Class.forName("com.mysql.jdbc.Driver");
2. 建立连接
使用JDBC连接数据库的第二步是建立连接。建立连接时需要提供数据库的连接信息,如数据库地址、用户名、密码等。连接对象的创建方式如下:
Connection conn = DriverManager.getConnection(url, user, password);
其中url是数据库连接地址,user是用户名,password是密码。
MySQL连接地址的格式如下:
jdbc:mysql://[host:port]/[database]
其中,host是主机名,port是端口号,database是数据库名。
例如:
jdbc:mysql://localhost:3306/test
表示连接本地MySQL数据库的test库。
3. 执行SQL语句
建立连接后,就可以使用JDBC执行SQL语句了。JDBC提供了多个执行SQL语句的方法,常见的有Statement和PreparedStatement。
Statement是一个简单的SQL语句执行器,使用它可以执行基本的SQL语句,如SELECT、INSERT、UPDATE和DELETE。Statement执行SQL语句的代码如下:
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM user");
PreparedStatement比Statement更为强大,它可以绑定参数并动态生成SQL语句,用于执行需要参数化的SQL语句,如INSERT、UPDATE和DELETE。PreparedStatement执行SQL语句的代码如下:
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO user(name, age) VALUES (?, ?)");
pstmt.setString(1, "张三");
pstmt.setInt(2, 18);
pstmt.executeUpdate();
4. 关闭连接
JDBC连接是资源消耗较大的对象,在使用完毕后需要及时关闭以释放资源。JDBC连接的关闭方法如下:
conn.close();
三、JDBC连接MySQL数据库示例
以下是一个使用JDBC连接MySQL数据库的示例代码:
import java.sql.*;
public class JdbcDemo {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
// 加载MySQL的JDBC驱动
Class.forName("com.mysql.jdbc.Driver");
// 建立连接
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
// 执行SQL语句
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM user");
while (rs.next()) {
System.out.println(rs.getInt("id") + " " + rs.getString("name") + " " + rs.getInt("age"));
}
// 关闭连接
conn.close();
}
}
运行以上代码,可连接到名为test的MySQL数据库,并输出user表中的数据。
四、JDBC连接Oracle数据库示例
以下是一个使用JDBC连接Oracle数据库的示例代码:
import java.sql.*;
public class JdbcDemo {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
// 加载Oracle的JDBC驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 建立连接
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String user = "scott";
String password = "tiger";
Connection conn = DriverManager.getConnection(url, user, password);
// 执行SQL语句
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM emp");
while (rs.next()) {
System.out.println(rs.getInt("empno") + " " + rs.getString("ename") + " " + rs.getInt("sal"));
}
// 关闭连接
conn.close();
}
}
以上代码用于连接名为orcl的Oracle数据库,并查询emp表中的数据。
五、JDBC连接MongoDB示例
以下是一个使用JDBC连接MongoDB的示例代码(需要JDBC驱动包):
import java.sql.*;
public class JdbcDemo {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
// 加载MongoDB的JDBC驱动
Class.forName("mongodb.jdbc.MongoDriver");
// 建立连接
String url = "jdbc:mongodb://localhost/mydb";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
// 执行SQL语句
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM mycollection");
while (rs.next()) {
System.out.println(rs.getString("name") + " " + rs.getString("gender"));
}
// 关闭连接
conn.close();
}
}
运行以上代码,可连接到名为mydb的MongoDB数据库,并查询名为mycollection的集合中的数据。
六、总结
本文从基本概念、连接数据库的过程、示例代码三个方面详细介绍了如何使用Java JDBC连接不同类型的数据库。使用JDBC连接数据库,能够让开发人员快速、简单地访问数据库,提高开发效率。同时,JDBC提供了许多高级功能,如事务、批处理、元数据等,使得开发人员能够更加方便地操作数据库。