当前位置:首页 > 问答 > 正文

用JDBC驱动在tomcat里简单搞定oracle数据库连接,步骤和注意点分享

Tomcat本身是个Web服务器,它不直接管你的数据库连接,JDBC是Java里用来连接数据库的一套标准,在Tomcat里用JDBC连接Oracle,核心就是把Oracle的JDBC驱动jar包交给Tomcat,然后在你自己的Web应用里写代码去连接。

下面我一步步说,尽量说大白话。

第一步:搞到Oracle的JDBC驱动jar包

这个是最关键的,没这个玩意儿啥也干不成,你不能用Java自带的那种通用驱动,必须用Oracle官方提供的专用驱动,根据你用的Oracle数据库版本,去Oracle官网下载对应版本的JDBC驱动,通常文件名类似 ojdbc8.jar(对应Java 8和Oracle 11g/12c/18c/19c)或者 ojdbc10.jarojdbc11.jar 等,一定要下对版本,不然会报各种奇怪的错,这个信息参考了Oracle官方文档关于JDBC驱动兼容性的说明。

第二步:把jar包放到正确的位置

用JDBC驱动在tomcat里简单搞定oracle数据库连接,步骤和注意点分享

你不能简单地把这个jar包扔到你Web项目的普通文件夹里,在Tomcat环境下,有几种放法,但最常见、最推荐的是下面这种:

  • 放到Web应用的 WEB-INF/lib 目录下:在你的Web项目文件夹里(比如叫 myapp),找到 WEB-INF 目录,如果里面没有 lib 文件夹,就自己新建一个,然后把下载好的 ojdbc8.jar 这样的文件复制进去,当你把整个Web应用打包成WAR文件部署到Tomcat时,Tomcat会自动加载这个 lib 目录下的所有jar包,这是最直接、最不容易出错的方法,尤其对于学习和小型项目。

还有一种方法是在Tomcat的全局库目录里放,但那个配置起来麻烦点,而且容易影响到其他应用,不建议新手一开始就这么干,咱们就先搞定自己项目里的。

第三步:写代码连接数据库

用JDBC驱动在tomcat里简单搞定oracle数据库连接,步骤和注意点分享

现在驱动有了,就可以在你的Java代码(通常是Servlet或者JSP里)写连接数据库的代码了,基本步骤就这几行:

  1. 加载驱动类:虽然新版本的JDBC驱动可以自动注册,但为了保险和兼容性,最好还是手动加载一下,写一句 Class.forName("oracle.jdbc.OracleDriver");,这句话的意思就是告诉Java虚拟机:“喂,把Oracle的驱动类给我准备好。”
  2. 获取连接:这是核心,用 DriverManager.getConnection() 这个方法,你需要告诉它三样东西:
    • 数据库地址(URL):格式是 jdbc:oracle:thin:@主机名:端口号:数据库实例名,比如你的Oracle数据库装在本机,默认端口1521,数据库实例叫 xe(这是Oracle Express版的默认名),那URL就是 jdbc:oracle:thin:@localhost:1521:xe,如果你的数据库在另一台服务器上,就把 localhost 换成那台服务器的IP地址或域名。
    • 用户名:连接数据库用的账号,scott
    • 密码:对应用户的密码,tiger。 所以完整的一句代码大概是:Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "scott", "tiger");
  3. 使用连接:拿到 Connection 对象 conn 后,你就可以用它来创建 StatementPreparedStatement 对象,然后执行SQL语句(比如查询、插入数据等)了。
  4. 关闭连接这一点超级重要! 数据库连接是非常宝贵的资源,用完了必须关,不关的话,连接会一直占着,很快数据库就会因为连接数满了而崩溃,所以一定要在 finally 块里(或者用Java 7的try-with-resources语法)确保关闭连接,关闭的顺序一般是:先关结果集(ResultSet),再关语句(Statement),最后关连接(Connection)本身。

第四步:部署和测试

把你的Web应用(连同 WEB-INF/lib 下的jar包)部署到Tomcat,然后启动Tomcat,访问你的网页,看看数据库操作是否成功。

需要注意的几个大坑(避坑指南):

  1. 驱动版本不对:这是我见过最多人栽跟头的地方,Oracle数据库版本、JDBC驱动jar包版本、你的Java运行环境(JRE)版本,这三者必须兼容,比如你用Java 8,却下了个给Java 11用的 ojdbc11.jar,那很可能就跑不起来,一定要去Oracle官网查兼容性矩阵,这个教训来自无数程序员的血泪史。
  2. 连接字符串写错jdbc:oracle:thin:@localhost:1521:xe 这里面的每一个部分都不能错,特别是数据库实例名,很多人会写成数据库名或者服务名,如果数据库配置了服务名,连接字符串可能会是 jdbc:oracle:thin:@//主机名:端口号/服务名 这种格式,不确定的话,最好问问数据库管理员。
  3. 忘了关连接:我再强调一遍!这不仅是代码规范问题,更是会直接导致生产事故的大问题,务必养成“有开有关”的习惯,用try-with-resources最省心。
  4. 把敏感信息硬编码在代码里:像数据库密码这种东西,直接写在Servlet代码里是非常不安全的,尤其是项目要交给别人或者上传到代码仓库的时候,正确的做法是把它放到Tomcat的配置里,一个常见的方法是使用JNDI数据源。
  5. 关于JNDI数据源(进阶选择):上面说的那种直接在代码里 DriverManager.getConnection 的方式,叫做“直连”,在真正的生产环境中,更推荐使用Tomcat提供的“JNDI数据源”,简单说,就是你在Tomcat的配置文件(context.xml)里,提前把数据库连接的信息(URL、用户名、密码)配置好,然后在你自己的Java代码里,不需要知道密码,只需要用一个名字(JNDI名)去Tomcat那里“查找”一个现成的连接来用,这样做的好处是:
    • 安全:密码不会写在你的应用代码里。
    • 管理方便:如果要改数据库密码,只需要改Tomcat的配置,不需要重新编译和部署你的Web应用。
    • 性能好:Tomcat可以管理一个连接池,避免频繁创建和关闭连接的开销,大大提高性能。 虽然一开始配置JNDI可能觉得有点绕,但对于严肃的项目来说,这是必经之路,网络上有很多关于“Tomcat配置Oracle JNDI数据源”的教程。

最简单粗暴的步骤就是:下载对的ojdbc.jar -> 扔进项目的WEB-INF/lib -> 在Servlet里用四行核心代码(加载驱动、获取连接、使用、关闭)操作,先把这个流程跑通,然后再去研究更优的JNDI数据源方式。