DCS281 - Database System Principle
本文章记录了使用 Java 访问 Microsoft SQL Server 的过程。
环境
- Windows 21H1 19043.1288
- Java version 1.8.0_121
- Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
- Java HotSpot(TM) Client VM (build 25.121-b13, mixed mode)
- Microsoft JDBC Driver 9.4 for SQL Server
- Microsoft SQL Server 2019
配置 JDBC 环境
-
由于先前电脑上已经有Java运行环境,于是参考教程配置JDBC环境。主要是下载驱动,然后配环境变量调整路径什么的。我的Java是32位的,一直用的64位动态链接库用不上,最后整了很久换成32位的动态链接库就好了。
-
设置SQL Server的身份验证方式,开启SQL Server的
混合安全验证
使用sa登陆。 -
配置JDBC连接
- 打开 SQL Server配置管理器
- 打开
SQL Server网络配置
–>MSSQLSERVER的协议
–>TCP/IP
- 找到
IP地址
为127.0.0.1
的一项,设置TCP端口
为1433
并开启 - 找到
IPALL
项,设置TCP端口
为1433
,保存 - 保存后,开启
Named Pipes
和TCP/IP
-
连接到 Microsoft SQL Server
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
import java.sql.*; public class PrintAllTables { public static void main(String[] args) { String JDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; String connectDB = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=JY;integratedSecurity=true;"; try { Class.forName(JDriver); } catch (ClassNotFoundException e) { e.printStackTrace(); System.exit(0); } try { String user = "sa"; String password = "******"; Connection con = DriverManager.getConnection(connectDB,user,password); // Connect to SQL Server Statement cmd = con.createStatement(); // Create SQL command object ... // SQL command injection cmd.close(); // Close command object connection con.close(); // Close database object connection } catch(SQLException e){ e.printStackTrace(); System.exit(0); } } }
读取图书借阅数据库系统JY的图书表book
0
1
2
3
4
ResultSet rs = cmd.executeQuery("SELECT * FROM BOOK");
System.out.printf("book_id\t\tbook_name\t\t\tbook_isbn\tbook_author\tbook_price\tinterview_times\tbook_publisher\n");
while (rs.next()) {
System.out.println(rs.getString("book_id")+"\t"+rs.getString("book_name")+"\t"+rs.getString("book_isbn")+"\t"+rs.getString("book_author")+"\t"+rs.getString("book_price")+"\t"+rs.getString("interview_times")+"\t"+rs.getString("book_publisher"));
}
遇到的问题
-
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
这是没有成功注入驱动。可能是没有正确设置jre包的路径。
-
com.microsoft.sqlserver.jdbc.SQLServerException: 没有为集成身份验证配置驱动程序。
这是由于jre包的一个动态链接库没链接上。
Reference
microsoft-jdbc-driver-for-sql-server
在 Java 中如何使用 JDBC 连接 SQL Server 数据库
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.