一、引言在 Java Web 网站开发中数据访问是最核心的环节而这一切都离不开数据库连接。本文将介绍几种常见的数据库连接方式。二、数据库连接前提说明对于 MySQL 数据库只要安装好对应的驱动JDBC 就能屏蔽底层连接细节直接对数据库进行操作。也就是说只需安装好相应厂商的数据库驱动即可完成连接。加载数据库驱动的本质是将数据库厂商提供的 JDBC 驱动类加载到 Java 程序中并注册到 DriverManager供 Java 程序调用。数据库进程仍然运行在数据库服务器上Java 通过 JDBC 驱动去连接和操作数据库。连接 MySQL 数据库示例代码StringdbNametest;StringuserNameroot;StringuserPasswd123456;Stringurljdbc:mysql://localhost/dbName?useSSLfalseserverTimezoneAsia/Shanghai;Class.forName(com.mysql.cj.jdbc.Driver);ConnectionconnDriverManager.getConnection(url,userName,userPasswd);重点提要Connection 接口代表与特定数据库的连接通过 DriverManager 类的 getConnection() 方法获取 Connection连接 Java 程序和数据只有获取连接对象才能访问数据库来操作数据表。补充MySQL8 的驱动类com.mysql.cj.jdbc.DriverMySQL5 的驱动类com.mysql.jdbc.DriverJSP 连接 Oracle 数据库thin 模式严格说JSP 本身不负责连接数据库这里其实是在 JSP 里写 JDBC 代码。示例代码Class.forName(oracle.jdbc.OracleDriver);Stringurljdbc:oracle:thin:localhost:1521:orcl;//orcl为数据库的SIDStringuserroot;Stringpasswordroot;ConnectionconnDriverManager.getConnection(url,user,password);补充旧版 Oracle 驱动类可能是 oracle.jdbc.driver.OracleDriver现在更推荐 oracle.jdbc.OracleDriver。另外 newInstance() 不需要去掉即可。JSP 连接 SQL Server 数据库实例代码Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);Stringurljdbc:sqlserver://localhost:1433;DatabaseNamepubs;//pubs为数据库名Stringuserroot;Stringpasswordroot;ConnectionconnDriverManager.getConnection(url,user,password);说明老项目里可能看到 com.microsoft.jdbc.sqlserver.SQLServerDriver 和 jdbc:microsoft:sqlserver://…那是旧版写法现在不建议用了。JSP 连接 DB2 数据库实例代码Class.forName(com.ibm.db2.jcc.DB2Driver);Stringurljdbc:db2://localhost:50000/SAMPLE;//SAMPLE为数据库名Stringuserroot;Stringpasswordroot;ConnectionconnDriverManager.getConnection(url,user,password);说明这段原稿里贴的是 Oracle 代码DB2 要用 DB2 驱动和 DB2 URL。JSP 连接 Sybase 数据库实例代码Class.forName(com.sybase.jdbc4.jdbc.SybDriver);Stringurljdbc:sybase:Tds:localhost:5007/tsdata;//tsdata为数据库PropertiessysPropsnewProperties();sysProps.put(user,userid);sysProps.put(password,user_password);ConnectionconnDriverManager.getConnection(url,sysProps);说明不要用 System.getProperties()那样会把账号密码写到整个 JVM 的系统属性里建议用独立的 Properties。老驱动 com.sybase.jdbc.SybDriver 比较旧jConnect 新版可用 com.sybase.jdbc4.jdbc.SybDriver。补充一句上面这些写法是原生 JDBC 的写法主要用于学习原理。实际项目里现在大范围使用的不是裸写 JDBC而是基于 JDBC 封装的连接池和框架比如 Spring Boot HikariCP MyBatis/JPA。底层还是 JDBC只是不用每次自己 DriverManager.getConnection()。另外Connection 用完要关闭密码也不要硬编码在代码里。