资讯动态

JSP连接ACCESS数据库入门:新手也能跑通的数据读取教程

发布时间:2026/10/16 18:01:33 来源:尧图企业网站定制
简介这是一份JSP连接ACCESS数据库入门教程文档面向Java Web初学者用于演示通过JDBC-ODBC桥访问Access数据库的完整流程。文档以创建test.mdb数据库、在username表中设置uid与pwd两个文本字段为例并指导将数据库文件放到TOMCAT对应目录再结合JDBCAccess.jsp代码展示连接与查询实现覆盖加载驱动、拼接连接串、application.getRealPath物理路径转换、Statement执行SQL、遍历ResultSet输出数据以及释放资源等关键细节。资源为单个doc文档共31KB内容紧凑适合对照练习。已有240人学习使用。读者可快速上手理解JSP操作Access数据库的典型写法同时文中点出Access与MySQL等数据库在驱动和连接方式上的差异便于迁移到后续JDBC学习中也能为小型项目快速实现数据读写提供参考。1. JSP 连接 ACCESS 数据库是什么:一个能让你看懂网页数据从哪里来的入门概念“JSP 连接 ACCESS 数据库”第一次看到这几个字,确实容易发怵——三个英文词叠在一起,感觉门槛很高。拆开看就没那么吓人:JSP 是写动态网页的 Java 技术,ACCESS 是微软出的小型数据库,连接的意思就是让网页能从数据库文件里读取数据。你网页上看到的用户列表、登录校验、留言记录,都存在 ACCESS 的数据库文件里,JSP 负责把它取出来显示在浏览器上。我第一次学的时候最大的感受是:原理不难,难的是环境配置。这套组合特别适合新手上路、课程设计和内部小工具,因为 ACCESS 不用单独安装数据库服务,一个 .mdb 文件就是一个数据库,配好 Tomcat 就能跑起来。这篇入门,就带你从零认识它,并跑通第一个完整例子。2. 为什么选 JSP 和 ACCESS:这对组合在小项目里有多省事2.1 JSP 到底是干嘛的:网页里的“Java 小车间”很多新手第一次接触 JSP 时,容易把它和 JavaScript 搞混,二者虽然都带“Java”,但完全不是一回事。JSP 全称是 Jakarta Server Pages(早期叫 Java Server Pages),是一种运行在服务器端的网页技术。你可以这样理解:浏览器打开一个 JSP 页面时,服务器会先把页面里的 Java 代码执行一遍,再把执行结果拼成一段普通 HTML 发给浏览器。所以用户最终看到的是网页,但网页里的内容是动态算出来的。打个比方,普通 HTML 像打印好的菜单,谁来看到的内容都一样;JSP 像一块电子菜单屏,后厨剩什么菜,屏幕就显示什么。这种根据数据动态改变页面内容的能力,就是动态网页的核心逻辑。而且 JSP 里写的业务代码全是 Java,所以你要是有 Java 基础,学起来非常顺;就算没有基础,我们这个例子里的代码量也不大,跟着抄一遍就能理解个大概。这也是我推荐新手用 JSP 入门动态网站的原因——你接触到的每行代码都在做一件看得见、摸得着的事。2.2 ACCESS 数据库为什么够用:桌面级的小型资料柜ACCESS 是微软 Office 家族里的轻量级数据库,它把数据整体存放在单个 .mdb 或 .accdb 文件里。这意味着它不需要像 MySQL、Oracle 那样先安装一个独立的数据服务,也不需要配置端口、用户名和密码,默认情况下直接用文件就能连接。这带来两个直观好处:一是部署非常简单,把一个数据库文件拷到项目目录就完成了数据库的“搬迁”;二是对新手特别友好,环境复杂度降到最低。你可以把 ACCESS 想象成一个带表格的资料柜:一个 .mdb 文件就是一个柜子,柜子里能放多张表(Table),每张表像 Excel 一样有列和行。列叫字段,行叫记录。我们后面要创建的 username 表,就像一张存用户名和密码的花名册:字段 uid 对应用户名,字段 pwd 对应密码,每一行就是一条账号记录。这个模型非常直观,懂 Excel 的人几乎没有额外学习成本,这也让 ACCESS 成为新手入门数据库实践时的天然台阶。2.3 适用场景:课程设计、内部工具、演示系统JSP 连接 ACCESS 这套组合最活跃的场景,是课程设计、期末项目和中小型内部系统。这类场景有几个共同特点:数据量不大,通常几千条到几万条;并发不高,几个人到几十个人同时使用;功能停留在增删改查层面,ACCESS 完全能胜任。比如做一个学生信息管理系统、小型图书借阅系统、员工通讯录,用 JSP 写页面逻辑、ACCESS 存数据,几天就能跑通一个演示版。反之,如果一上来就引入 MySQL,你还要经历安装服务、创建账号、配置权限、处理防火墙这一整套流程,对新手相当劝退。ACCESS 的核心价值就是把复杂度集中到一个文件里,让你把精力放在“页面怎么和数据库打交道”这个真正的学习重点上。等你理解了这套交互逻辑,以后切换到 MySQL 其实很快,因为 JDBC 的编程接口大同小异,你换的只是连接配置,而不是思维方式。2.4 和其他方案比:ACCESS 和 MySQL 的直观对比我整理了一张对比表,方便你建立整体印象。这里没有绝对的好坏,关键是看你现在处于什么阶段:对比维度ACCESS(.mdb)MySQL安装方式无需服务,单文件随项目走需要安装数据库服务适合规模小型项目、学习实践中小型到大型项目并发能力较低,适合少量用户较高,支持多用户学习成本很低,会 Excel 就能建表中等,需要学 SQL 和命令行连接方式JDBC-ODBC 桥接方式JDBC 专用驱动典型场景课程设计、Demo 演示生产环境、正式项目从这个表能看出来,ACCESS 的定位就是“够用且简单”,它把环境复杂度降到了最低,这也是它长期被课程设计选中的原因。交作业之前,你最不想处理的就是“数据库服务启动失败”这种环境问题。用 ACCESS,文件在,数据就在,简单直接。有一点要提前说明:这个组合适合入门和小规模使用,如果将来要做高并发的正式系统,还是要迁移到 MySQL 或 PostgreSQL 等更专业的数据库。但迁移时,你写的 JSP 代码里大部分逻辑都能保留,只是连接字符串和驱动名称会变。所以,现在花时间理解这套连接方式,绝不是在学没用的东西。3. 动手准备:创建数据库、建表、放对目录3.1 创建 test.mdb 数据库的两种方式创建 Access 数据库最常规的方式,是使用微软 Office 自带的 Access 软件。打开后选择“空白数据库”,文件名输入 test,保存类型选择“Access 2002-2003 格式(.mdb)”。这里的关键点在于:我们后面的连接代码里用的是 Microsoft Access Driver (.mdb),它面向的是旧版 .mdb 格式,所以保存时不要选默认的 .accdb 格式,否则驱动可能不识别文件。如果你的电脑没装 Office Access,也可以找一些开源的数据库管理工具来创建 .mdb 文件。但我的建议是:课程设计如果都在 Windows 环境下进行,直接在装有 Office 的机器上建库最省心。我第一次学的时候图省事,用在线工具转了个文件,结果驱动一直提示文件格式不对,折腾了一下午,后来换回 Access 本机创建,一次就通了。这是实打实的血泪经验:别为了省两分钟,把自己送进“格式不兼容”的坑。建好的文件叫 test.mdb。数据库名可以随便改,但一旦你改了名字,后面 JSP 代码里的 spath data/test.mdb 也必须同步改。这是新手最容易忽略的对应关系,先记在脑子里。提示:如果你的系统区域设置是中文,Access 的界面也会是中文,操作路径和上面描述一致,只是按钮名称显示为中文。3.2 在 username 表里建立 uid 和 pwd 字段打开 test.mdb,在表对象下选择“使用设计器创建表”。你会看到一个字段设计界面:第一列写字段名,第二列选数据类型。我们只需要两个字段:uid:数据类型选“文本”,字段大小填 20 或 50,用来存用户名。pwd:数据类型选“文本”,字段大小同样填 20 或 50,用来存密码。填写完成后,按 CtrlS 保存表,系统会提示你给表命名,这里输入 username。又一个高频翻车点来了:代码里写的是 select * from username,如果你的表名写成 user 或 users,查询时就会报“对象名无效”。所以表名、字段名必须和代码保持一致,即便大小写不对也会出问题,建议全部小写,杜绝低级错误。建完表之后,建议先手动插入两三条测试数据。右键选择“数据表视图”,在 uid 列填 admin、alice 之类的账号,在 pwd 列填对应密码。为什么要这样做?因为后面跑 JSP 页面时,只有表里有数据,页面上才能直观看到读取结果。空表也能连接成功,但页面上不会显示任何记录,新手很容易误以为自己的程序写得不对,白费力气排查。3.3 把数据库放进 Tomcat 的 data 目录这一步的本质,是让 JSP 项目能够定位到数据库文件。原文里,test.mdb 被放在 Tomcat 安装目录下的 webapps\ROOT\data 里。为什么放在这?因为 JSP 代码中会用 application.getRealPath(spath) 把相对路径 data/test.mdb 转换成服务器里的物理路径。application 是 JSP 的内置对象,getRealPath() 方法会以当前 Web 应用的根目录为基准去解析文件路径。如果你的 Tomcat 装在默认位置,完整路径大约是 C:\Program Files\Apache Software Foundation\Tomcat 版本号\webapps\ROOT\data。实际操作时,你需要在 ROOT 目录下手动新建一个名为 data 的文件夹,再把 test.mdb 拷进去。不同版本的 Tomcat 目录结构会有点差异,但思路完全一致:找到 webapps 下的 ROOT 目录,这就是默认 Web 应用的根目录,在它里面创建 data 文件夹存放数据库。新手在这里最常见的错误,是把数据库文件直接丢到 Tomcat 的安装根目录,或者丢到 webapps 下却没有经过 ROOT 目录。这样一来,application.getRealPath() 解析不到文件,自然就连接失败了。我强烈建议你放好文件后,用资源管理器把完整路径复制出来,和代码里的相对路径做一次人工对照。这个动作只要花十秒,能帮你避免至少半小时的迷茫排查。3.4 验证数据库文件是否放对了位置文件放好之后怎么确认没有放错?一个非常直观的办法是:在浏览器里访问 http://localhost:8080/data/test.mdb。如果你能看到提示下载或预览文件内容,就说明这个文件确实在 Web 应用根目录下可以被访问;如果浏览器提示 404,要么是路径不对,要么是文件根本没进去。当然,实际项目中不建议把数据库文件放在可被外部访问的目录,这里只是为了学习方便。还要确认 Tomcat 已经正常启动。Windows 系统下,进入 Tomcat 的 bin 目录,双击 startup.bat 启动;如果之前启动过,要确保没有端口冲突(排查章节会详细讲)。启动成功后,浏览器访问 http://localhost:8080 能看到 Tomcat 默认首页,就说明环境就绪。这套环境检查只需做一次,接下来写 JSP 代码的时候,你就不会因为环境问题反复怀疑人生。4. 第一个 JSP 连接程序:从加载驱动到页面显示数据4.1 连接字符串,先看懂再动手写在写代码之前,先花五分钟看懂整个连接过程里最关键的一行:String url jdbc:odbc:Driver{Microsoft Access Driver (*.mdb)};DBQ dbpath;这行字符串可以拆成三块理解:jdbc:odbc: 表示通过 JDBC 调用 ODBC 桥接。JDBC 是 Java 访问数据库的通用接口,ODBC 是 Windows 上通用的数据库访问接口,而 JdbcOdbcDriver 就是这两个体系之间的翻译官。Driver{Microsoft Access Driver (*.mdb)}:指名具体使用哪个 ODBC 驱动程序。这个驱动名必须原样保留,不要手动改动,连星号和括号都是固定格式。DBQ:指定数据库文件的实际路径。DBQ 是 ODBC 连接里用来定位数据库文件位置的参数,后面的 dbpath 就是 application.getRealPath() 解析出的绝对路径。连接的实际链路是:JSP 里的 Java 代码通过 JDBC 找到 JdbcOdbcDriver,这个驱动再去调用 Windows 系统的 ODBC 驱动,ODBC 驱动最终打开 DBQ 指定的 .mdb 文件。链路听起来长,但对开发者来说,只需要写一行 url 加一行驱动加载代码就够了。这里有一个背景知识值得了解:JdbcOdbcDriver 是早期 Java 版本自带的桥接驱动,在较新的 JDK 版本中已经被移除了。如果你用的 JDK 比较新(比如 8 及以上),加载驱动时会报 ClassNotFoundException,具体解决办法看排查章节。对新手来说,用这套方式理解数据库连接链路是最直观的,跑通之后换任何数据库,你都会觉得思路似曾相识。4.2 完整 JSP 代码:逐段拆解运行逻辑下面是完整的 JDBCAccess.jsp 文件代码,文件需要放在 Tomcat 的 ROOT 目录下,和 data 目录平级。% page contentTypetext/html; charsetgb2312 languagejava importjava.sql.* % meta http-equivContent-Type contenttext/html; charsetgb2312 % try { // 定义数据库相对路径,data 文件夹下放 test.mdb String spath data/test.mdb; // 用 application.getRealPath 转成服务器真实物理路径 String dbpath application.getRealPath(spath); String user ; // ACCESS 用户名,默认没有则留空 String pwd ; // ACCESS 密码,默认没有则留空 // 拼出完整的 JDBC-ODBC 连接字符串 String url jdbc:odbc:Driver{Microsoft Access Driver (*.mdb)};DBQ dbpath; // 加载 JDBC-ODBC 桥驱动 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); // 建立数据库连接 Connection conn DriverManager.getConnection(url); // 创建 Statement 对象,用于执行 SQL Statement stmt conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); // 查询 username 表中的所有记录 String sql select * from username; ResultSet rs stmt.executeQuery(sql); while (rs.next()) { // 每行读取 uid 和 pwd 两个字段并输出 out.print(用户名: rs.getString(uid)); out.print( 密码: rs.getString(pwd) br); } out.print(br恭喜你!数据库连接成功!); // 依次关闭结果集、语句对象、连接,释放资源 rs.close(); stmt.close(); conn.close(); } catch (Exception e) { // 任何一步出错都会进入这里,并打印错误原因 out.print(数据库连接错误!,错误信息如下:br); out.print(e.getMessage()); } %这段代码的执行流程可以浓缩成五步:定位文件 → 加载驱动 → 建立连接 → 执行 SQL → 读取并输出数据。你不需要背代码,但要能对着每一行说出它在做什么。先看第一、二行。page 指令里的 importjava.sql.* 引入了所有 JDBC 相关类,后面才能直接使用 Connection、Statement、ResultSet 这些类型。charsetgb2312 是页面的编码设置,如果你按后面的排查建议统一改用 UTF-8,这两处也要一起改。再看 try 块内部。String spath data/test.mdb 是关键路径配置,自己建的数据库如果文件名不同,这里必须同步修改。application.getRealPath(spath) 是 JSP 内置对象的方法,它把相对路径解析成 Tomcat 能真正访问的绝对路径,所以代码里完全不需要写死 C:\Program Files... 那样的一长串路径,这是这套写法最友好的一点。接下来是连接三件套:Class.forName 负责把桥驱动加载到 JVM 里;DriverManager.getConnection(url) 根据 URL 自动匹配能处理它的驱动并建立连接;createStatement 创建了一个能发送 SQL 语句的执行对象。createStatement 里的两个参数分别表示结果集支持前后滚动和可以直接更新,现阶段不必深究,只需要知道它有这两项能力即可。最后的 while(rs.next()) 循环是结果集最常见的遍历姿势:rs.next() 在还有下一条记录时返回 true,同时把内部指针移到下一条;rs.getString(uid) 取出当前行里名字为 uid 的字段的值。循环结束后,out.print 把内容直接输出到页面上。整个程序用 try-catch 包住所有可能出错的操作,一旦发生异常,就把错误信息显示到浏览器上,方便你对照排查。4.3 运行与结果:浏览器访问后你该看到什么把 JDBCAccess.jsp 保存到 ROOT 目录后,重启 Tomcat(如果之前已经启动,刷新页面即可,JSP 文件会被自动编译),然后在浏览器输入:http://localhost:8080/JDBCAccess.jsp如果一切正常,你会看到类似下面的输出:用户名:admin 密码:123456 用户名:alice 密码:abc123 恭喜你!数据库连接成功!第一段来自数据库里的真实数据,最后一行则代表整个连接链路完全打通。如果你跑到了这一步,恭喜,你已经完成了 JSP 和 ACCESS 的第一次握手。如果页面显示“数据库连接错误!错误信息如下:”加一串英文异常,先别慌。那串英文其实非常有价值,它精准地告诉了你问题发生在哪一步。下一章,我们就把新手最常撞上的几个坑逐个破解。5. 避坑指南:新手连接 ACCESS 最容易踩的 5 个坑5.1 现象一:ClassNotFoundException,驱动加载失败现象:访问 JSP 页面时,报出类似 ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver 的错误,页面直接白屏或显示异常堆栈。原因:新版 JDK 移除了 JDBC-ODBC 桥驱动。sun.jdbc.odbc.JdbcOdbcDriver 这个桥驱动在 JDK 8 里被标记为弃用并最终移除,如果你的运行环境用的是 JDK 8 及以上版本,Class.forName 这一行必然失败。解决:两个办法。一是把 JDK 版本调整为 7 或更早版本,重新配置开发环境和 Tomcat 运行环境;二是改用第三方提供的 JDBC-ACCESS 驱动,把 Class.forName 里的驱动类名和连接 URL 换成新驱动的格式。对新手的建议是优先用第一种方案,先把注意力集中在连接逻辑本身,不要过早陷入驱动适配的细节里。5.2 现象二:数据库路径找不到,data 目录位置不对现象:报错信息里有 java.io.FileNotFoundException,或者错误里直接打印了一个看起来不太对的完整路径,提示该路径不存在。原因:application.getRealPath(data/test.mdb) 解析的是当前 Web 应用根目录下的路径。如果 test.mdb 没有放在 ROOT/data/ 下,或者 data 文件夹名称写错,getRealPath 就会返回 null 或一个根本不存在的路径,ODBC 驱动自然打不开文件。解决:打开 Tomcat 的 webapps\ROOT 目录,确认是否存在 data 子目录,再确认 test.mdb 确实在 data 里面。Windows 路径不区分大小写,但目录层级不能错。最快定位方式是在代码里临时加一行 out.print(dbpath),刷新页面看它输出的物理路径到底指向哪里,再和资源管理器里的实际位置做对照,问题通常一眼就能发现。5.3 现象三:中文字段显示乱码,页面全是问号现象:数据库连接成功,但读出来的中文用户名显示成一串??? 或者乱码,英文数据却正常。原因:页面编码、数据库字段内容和读取时的字符编码互不匹配。JSP 页面里用的是 gb2312,如果浏览器默认按 UTF-8 解析,就会冲突;ACCESS 文本字段默认保存系统区域设置的编码,在中文环境之间切换也可能影响读取结果。解决:把所有环节统一成同一种编码最省事。把 page 指令里的 charset 和 meta 标签里的 charset 都改成 UTF-8,保存 JSP 文件时也选择 UTF-8 编码;同时把数据库里已有的中文数据重新输入一遍。还有一个绕开问题的办法:测试阶段先全部使用英文数据,等跑通了再处理中文编码。对初学者来说,先保证流程通畅,再处理编码细节,是更稳的路线。5.4 现象四:Tomcat 起不来,8080 端口被占用现象:双击 startup.bat 后黑色窗口一闪而过,或浏览器访问 http://localhost:8080 一直打不开,控制台提示端口被占用。原因:Tomcat 默认监听 8080 端口。如果电脑上已经有别的程序占用了这个端口,或者之前启动过一个没关干净的 Tomcat 实例,新的 Tomcat 就绑不上端口,启动直接失败。解决:第一种是找出并结束占用进程。在命令行执行 netstat -ano | findstr 8080,看输出里的最后一列 PID 编号,再到任务管理器里结束这个进程。第二种是修改 Tomcat 端口:打开 conf\server.xml,把 Connector 的 port 属性从 8080 改成 8088 或其他未用端口,保存后重启。注意端口改了之后,访问地址也要变成 http://localhost:8088/JDBCAccess.jsp。5.5 现象五:连接成功但页面没有任何数据显示现象:页面显示了“恭喜你!数据库连接成功!”,但用户名和密码一行都没打印出来。原因:最常见的情况是 username 表是空表,没有任何记录;还有一种可能是表名虽然叫 username,但字段名不叫 uid 和 pwd。如果字段名对不上,执行查询阶段就会报错,根本走不到成功提示;既然走到了成功提示,说明 SQL 能执行,问题基本集中在表里没数据。解决:打开 ACCESS 里的 test.mdb,进入 username 表的数据表视图,手动插入两三条测试记录,按 CtrlS 保存后刷新 JSP 页面。还有一种隐性情况:表里似乎有记录,但内容是空字符串,读出来就是空白。这时删掉空行,重新输入真实数据即可。记住一个原则:连接成功只证明链路通了,数据能不能显示,取决于表里有没有实际内容。6. 下一步学什么:从 JSP 连 ACCESS 走向完整网站开发当你成功跑通第一个例子后,你已经掌握了 Web 数据交互最核心的一条链:页面发起请求 → Java 代码查数据库 → 结果渲染到浏览器。顺着这个基础,我给你三个学习方向,按顺序走,每一步都会有明确收获。第一个方向是把 JSP 本体学扎实。JSP 里除了 application,还有 request、response、session、out 等内置对象。你可以用 request 接收表单提交、用 session 记录登录状态,把现在的例子升级成一个登录页面:用户输入用户名和密码,JSP 到 ACCESS 里查是否存在这条记录,存在就显示“欢迎”,不存在就提示“账号或密码错误”。这样一个完整的小闭环,能让你真正理解一个 Web 系统是怎么运转的,远比单独背概念有效。第二个方向是转向 Servlet 加 JSP 的分工协作。现在的代码把数据库连接和页面显示都堆在同一个文件里,量一大就难以维护。主流做法是让 Servlet 负责处理请求和业务逻辑,JSP 只负责展示数据。你可以尝试把查询逻辑搬到一个 Servlet 类中,再把查询结果通过 request 属性传给 JSP 页面渲染。这段重构会让人切身体会到“分层”的价值,也是以后学习 Spring MVC 的地基。第三个方向是替换数据库。JDBC 的接口是通用的,当你以后把 ACCESS 换成 MySQL,会发现只需要更换驱动类名和连接 URL,Connection、Statement、ResultSet 这些类几乎没有变化。能做到这一步,你对“数据库连接”这个概念就有了抽象层面的理解,不再被某一款具体产品绑住手脚。从那以后,我每次写连接数据库的代码,都会强制走一遍固定动作:先打印数据库路径,再打印连接 URL,确认两者都符合预期后才继续往下写。这个习惯帮我避开了数不清的“路径不对”和“驱动找不到”,也让我在排查问题时从不靠猜。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑