一、JDBC概述
JDBC(Java Database Connectivity)是一种Java语言访问数据库的应用程序接口,通过JDBC连接数据库,使得Java程序可以方便地访问数据库系统。
JDBC不仅支持访问SQL数据库,还支持XML、ODBC等数据存储和处理方式,是Java EE平台的核心技术之一。
JDBC的架构如下图所示:
其中,JDBC API是JDBC的核心部分,提供了访问不同数据库的统一接口,应用程序使用JDBC API来驱动JDBC驱动程序,从而连接到数据库。
二、JDBC连接数据库
1. 加载JDBC驱动程序
通过Class.forName()方法来加载JDBC驱动程序,例如:
Class.forName("com.mysql.jdbc.Driver");
2. 建立连接
使用DriverManager.getConnection()方法建立与数据库的连接,例如:
Connection conn = DriverManager.getConnection(url, user, password);
其中,url是连接数据库的URL,格式为:jdbc:subprotocol:subname。
3. 执行SQL语句
在JDBC中,与数据库交互的最基本方法就是执行SQL语句,可以通过Statement或PreparedStatement对象执行。
Statement用于静态的SQL语句,例如:
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM table_name");
PreparedStatement用于动态的SQL语句,例如:
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO table_name VALUES (?, ?)");
pstmt.setString(1, "value1");
pstmt.setInt(2, 123);
pstmt.executeUpdate();
三、MS SQL数据库编程
MS SQL是Microsoft SQL Server的简称,是一种基于关系模型的数据库系统,可以与Java程序通过JDBC接口进行交互。
以下是MS SQL数据库编程中常见的一些问题及解决方法:
1. 驱动程序的加载
MS SQL的JDBC驱动程序是在Microsoft官网上下载的,需要先将其添加到Java的类路径下,例如:
// 加载JDBC驱动程序
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
2. 连接字符串的格式
连接MS SQL数据库的URL格式为:
jdbc:sqlserver://host:port;databaseName=dbname
其中,host是数据库服务器的主机名或IP地址,port是数据库服务器的端口号,dbname是要连接的数据库名。
3. SQL语句的执行
执行SQL语句的代码与其他数据库系统相似,例如:
// 执行SELECT语句
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM table_name");
// 执行UPDATE语句
PreparedStatement pstmt = conn.prepareStatement("UPDATE table_name SET col1 = ? WHERE col2 = ?");
pstmt.setString(1, "value1");
pstmt.setInt(2, 123);
pstmt.executeUpdate();
4. 数据类型的映射
MS SQL数据库与Java语言中的数据类型之间有着不同的映射关系,例如:
数据类型 | MS SQL | Java |
---|---|---|
整型 | int | int |
浮点型 | float, real | float |
字符型 | char, varchar, text | String |
日期时间型 | datetime, smalldatetime | java.util.Date, java.sql.Timestamp |
5. 事务处理
在MS SQL数据库中,可以使用JDBC的事务管理机制来控制多个SQL语句的执行,例如:
try {
// 关闭自动提交
conn.setAutoCommit(false);
// 执行多个SQL语句
PreparedStatement pstmt1 = conn.prepareStatement("UPDATE table_name SET col1 = ? WHERE col2 = ?");
pstmt1.setString(1, "value1");
pstmt1.setInt(2, 123);
pstmt1.executeUpdate();
PreparedStatement pstmt2 = conn.prepareStatement("UPDATE table_name SET col1 = ? WHERE col2 = ?");
pstmt2.setString(1, "value2");
pstmt2.setInt(2, 456);
pstmt2.executeUpdate();
// 提交事务
conn.commit();
} catch (Exception e) {
// 回滚事务
conn.rollback();
}
6. 数据库连接的关闭
在使用完数据库连接之后,必须关闭数据库连接,以释放连接资源。可以使用以下代码关闭数据库连接:
if (conn != null) {
conn.close();
}
总结
本文从JDBC概述入手,探讨了JDBC连接数据库的流程和MS SQL数据库编程中常见的问题及解决方法。JDBC作为Java程序访问各种数据库的标准接口,是Java EE开发中必不可少的技术之一。