用JDBC驱动在tomcat里简单搞定oracle数据库连接,步骤和注意点分享
- 问答
- 2025-12-26 23:31:45
- 2
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.jar、ojdbc11.jar 等,一定要下对版本,不然会报各种奇怪的错,这个信息参考了Oracle官方文档关于JDBC驱动兼容性的说明。
第二步:把jar包放到正确的位置

你不能简单地把这个jar包扔到你Web项目的普通文件夹里,在Tomcat环境下,有几种放法,但最常见、最推荐的是下面这种:
- 放到Web应用的
WEB-INF/lib目录下:在你的Web项目文件夹里(比如叫myapp),找到WEB-INF目录,如果里面没有lib文件夹,就自己新建一个,然后把下载好的ojdbc8.jar这样的文件复制进去,当你把整个Web应用打包成WAR文件部署到Tomcat时,Tomcat会自动加载这个lib目录下的所有jar包,这是最直接、最不容易出错的方法,尤其对于学习和小型项目。
还有一种方法是在Tomcat的全局库目录里放,但那个配置起来麻烦点,而且容易影响到其他应用,不建议新手一开始就这么干,咱们就先搞定自己项目里的。
第三步:写代码连接数据库

现在驱动有了,就可以在你的Java代码(通常是Servlet或者JSP里)写连接数据库的代码了,基本步骤就这几行:
- 加载驱动类:虽然新版本的JDBC驱动可以自动注册,但为了保险和兼容性,最好还是手动加载一下,写一句
Class.forName("oracle.jdbc.OracleDriver");,这句话的意思就是告诉Java虚拟机:“喂,把Oracle的驱动类给我准备好。” - 获取连接:这是核心,用
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");
- 数据库地址(URL):格式是
- 使用连接:拿到
Connection对象conn后,你就可以用它来创建Statement或PreparedStatement对象,然后执行SQL语句(比如查询、插入数据等)了。 - 关闭连接:这一点超级重要! 数据库连接是非常宝贵的资源,用完了必须关,不关的话,连接会一直占着,很快数据库就会因为连接数满了而崩溃,所以一定要在
finally块里(或者用Java 7的try-with-resources语法)确保关闭连接,关闭的顺序一般是:先关结果集(ResultSet),再关语句(Statement),最后关连接(Connection)本身。
第四步:部署和测试
把你的Web应用(连同 WEB-INF/lib 下的jar包)部署到Tomcat,然后启动Tomcat,访问你的网页,看看数据库操作是否成功。
需要注意的几个大坑(避坑指南):
- 驱动版本不对:这是我见过最多人栽跟头的地方,Oracle数据库版本、JDBC驱动jar包版本、你的Java运行环境(JRE)版本,这三者必须兼容,比如你用Java 8,却下了个给Java 11用的
ojdbc11.jar,那很可能就跑不起来,一定要去Oracle官网查兼容性矩阵,这个教训来自无数程序员的血泪史。 - 连接字符串写错:
jdbc:oracle:thin:@localhost:1521:xe这里面的每一个部分都不能错,特别是数据库实例名,很多人会写成数据库名或者服务名,如果数据库配置了服务名,连接字符串可能会是jdbc:oracle:thin:@//主机名:端口号/服务名这种格式,不确定的话,最好问问数据库管理员。 - 忘了关连接:我再强调一遍!这不仅是代码规范问题,更是会直接导致生产事故的大问题,务必养成“有开有关”的习惯,用try-with-resources最省心。
- 把敏感信息硬编码在代码里:像数据库密码这种东西,直接写在Servlet代码里是非常不安全的,尤其是项目要交给别人或者上传到代码仓库的时候,正确的做法是把它放到Tomcat的配置里,一个常见的方法是使用JNDI数据源。
- 关于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数据源方式。
本文由称怜于2025-12-26发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://www.haoid.cn/wenda/69073.html
