本文是对前几天的“JDBC连接Access数据库的几种方式”这篇的升级。因为在做一些小项目的时候遇到的问题,因此才决定写这篇博客的。昨天已经将博客公布了。可是后来经过一些验证有点问题,所以今天改了一下又一次的公布了

老师决定期末考试採用access数据库实现增删改查。我觉得如今的我已经没有问题了。可是曾经都是在JSP页面中连接access数据库,不管是下面的那种方式都进行了连接的练习,可是如今我想让我的项目中的訪问access数据库的java代码,封装到DAO中,在DAO中连接数据库,没有和Servlet API有不论什么的关系。

对于大多数人都会优先选择使用ODBC数据源的方式或者是使用绝对路径的方式连接access数据库,可是我个人觉得,这样做不太好,假设採用这种方式,项目做好后。放到他人的server上是无法执行的,由于数据库的信息不存在了。而我如今的想法是不管项目放那一台支持jdbc-odbc机器的server上都能够连接数据库。并执行项目。所以要完毕这种操作,仅仅有在让access数据库的mdb文件随着项目的移动而移动,因此,在Java

Web项目。将mdb文件放入到WebRoot下或者其子文件夹下。可是在DAO中怎样得到该mdb的真实路径呢?

事实上,这个和在JSP中动态的得到mdb文件的路径的思想基本上是一样。

先复习一下jsp中使用access数据库吧!

比如有例如以下的Access数据库student,表basic,以及6条记录,如今通过几种方式在Jsp中将他们的数据显示出来。如图所看到的:

对于几种连接Access数据库的方式。基本上都是基于JDBC-ODBC方式的。当然也有纯JDBC驱动的方式。这里我临时就不说了。

对于这几种方式。除了取得连接之处不同外。其它的代码都是一样的。所以这里先写出取得连接的几种方式。然后再用完整的代码进行显示。

方式一:通过JDBC-ODBC方式桥连直接连接:

1、对于这样的方式,首先要建立ODBC数据源,我的系统是Win7系统,所以依次选择“控制面板----管理工具----数据源(ODBC)”,打开数据源管理器,如图所看到的:

2、在“系统DSN”选项卡中,单击“加入”button,打开创建数据源对话框。选择Access数据库的驱动程序“Microsoft Access Driver(*.mdb)”如图所看到的:

3、单击完毕button。出现例如以下对话框。在数据源名中输入数据源的名字“JDBC-ODBC”,单击选择button,选择要操作的数据库“student.mdb”,单击确定button完毕数据源的配置。如图所看到的:

4、数据源配置好了,就能够写获取连接的代码了,例如以下所看到的:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

String url = "jdbc:odbc:JDBC-ODBC";

Connection con = DriverManager.getConnection(url);

以上的三行代码就是通过JDBC-ODBC连接Access数据库的关键代码。这样的方式连接能够非常方便的记忆连接的url代码,这是非常实用的。

后面的代码就是正常写了。

方式二:通过数据库所在的绝对路径方式连接

上面说过这里的几种方式都是基于JDBC-ODBC方式。所以载入驱动的Class.forName()中的參数都是“sun.jdbc.odbc.JdbcOdbcDriver”。对于这样的方式我将student.mdb文件放在了e盘的根文件夹下,在使用的时候。直接写上该数据库的绝对路径即可了。获取连接的代码例如以下所看到的:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+"e://student.mdb ";

Connection con = DriverManager.getConnection(url);

对于这样的方式不用配置数据源,尽管代码比較多,可是非常好理解的。也是非经常常使用的。

方式三:通过请求来获取数据库的绝对路径方式连接对于这样的方式。我个人觉得非常适合在Java Web应用中使用。将做好的应用给别人,别人也能够使用。我将该数据库文件放在了Web应用的根路径下。那么动态的获取连接的代码例如以下所看到的:

String path = application.getRealPath("/index.jsp");

path = path.substring(0,path.lastIndexOf("\\"))+"\\";

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+path+"student.mdb ";

Connection con = DriverManager.getConnection(url);

以上便是三种方式获取连接。接下来便是显示的代码了。代码例如以下所看到的:

Access

学号 姓名 年龄 地址 语文 数学 英语

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

String url = "jdbc:odbc:JDBC-ODBC";

Connection con = DriverManager.getConnection(url);

Statement st = con.createStatement();

String sql = "select * from basic";

ResultSet rs = st.executeQuery(sql);

while(rs.next())

{

%>

}

rs.close();

st.close();

con.close();

%>

执行JSP结果例如以下所看到的:

当将连接改为另外一种方式的时候还是好使的,JSP代码例如以下所看到的:

执行JSP结果例如以下所看到的:

当将连接改为第三种方式的时候还是好使的。JSP代码例如以下所看到的:

执行JSP结果例如以下所看到的:

对于这样的方式我的项目的文件夹结构例如以下所看到的:

第三种方式正是如今要用的方式。能够在Java类中,訪问数据库了。

首先将mdb文件放入到WebRoot以下,当点击超链接的时候。将信息传给Servlet,在Servlet中写上例如以下的语句:

String path = request.getServletContext().getRealPath("/");

Dao dao = new Dao();

dao.init(path);

在dao的init()方法中初始化Connection连接:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+path+"student.mdb ";

Connection con = DriverManager.getConnection(url);

这样在dao中就能够依据传过来的path找到数据库文件所在的路径了。

并成功的连接到数据库了。实现了分层理念。

可是这样出现了一个问题,假设放在WebRoot下,别人知道数据库的位置,不就能够訪问了吗?

为此我想了好久。既然是在Java类中訪问数据库。那么能不能将mdb文件放在src下边呢,答案是能够的。这样在MyEclipse或Eclipse中。就将该文件拷贝到了Web项目的WEB-INF下的classes根路径下,不就能訪问了,于是我的URL代码变成了这样:

String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=student.mdb ";

可是结果失败了,没有找到文件。但后来将该文件放到“项目”下。就好使了,可是这样一旦给别人,就又不行了,所以还得放到src下,仅仅有这样才会放到WebRoot或WebContent下,才会放到classes下,才干被java类所訪问。才干给别人项目就能执行。可是怎样才干找到classes文件夹下的数据库文件呢。

一直在找某个方法,直到找到了例如以下的方法:

方法一:Class类的getResource()方法或者是ClassLoader类的

方法二:URL类的getPath()方法

通过Class类的getResource()方法查找当前类所在的文件夹,这里dao类在com.student.dao包下。那么该方法返回的就是该类的路径,假设參数是“/”的化,返回的就是classes的根文件夹,这样就能够得到classes下的数据库mdb文件的所在路径。

再通过URL类的getPath()方法得到字符串类型的文件路径在server上的真实路径。

代码例如以下所看到的:

String path = this.getClass().getResource("/").getPath().replaceAll("%20"," ");//replaceAll方法是为了解决路径中含有空格字符的问题

path = path.substring(1,path.length());//对路径进行截取,获得的路径前边会多加一个杠Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+path+"student.mdb";

con = DriverManager.getConnection(url);

将以上的代码封装DAO中,就能够訪问到数据库了。

就能够在Java Web项目中。使用Access数据库实现MVC设计模式,并加入DAO和VO了。对于使用Servlet API将mdb文件的路径传给dao是一种方式。使用dao封装Access也是一种方式。有时为了方便能够将mdb文件放到WebRoot下。通过JSP或者是Servlet将数据库文件的路径传给dao。

我觉的Access数据库这一点比較好。能够将数据库和项目一起移动。通关这两种方式能够再不论什么的机器上执行。

眼下,我所知道的就是这么做,我也觉得这是比較好的作法。

用Java语言连接数据库,将数据库文件放在和类路径同样的文件夹下是非常好的作法。假设还有其它的办法,希望大家提出来。

本文是对前几天的“JDBC连接Access数据库的几种方式”这篇的升级。

因为在做一些小项目的时候遇到的问题,因此才决定写这篇博客的。昨天已经将博客公布了。可是后来经过一些验证有点问题。所以今天改了一下又一次的公布了

java web access_Java Web项目中连接Access数据库的配置方法相关推荐

  1. php连接mssql数据库的几种方法,php 连接mssql数据库与配置方法_PHP教程

    php 连接mssql数据库与配置方法 下面要来告诉各位朋友php连接mssql数据库并且与php mssql配置方法哦,这样如果你是初学者这文章可以让你从配置mssql 到让php连接mssql数据 ...

  2. sql数据库配置php,php 连接mssql数据库与配置方法

    php 连接mssql数据库与配置方法 下面要来告诉各位朋友php连接mssql数据库并且与php mssql配置方法哦,这样如果你是初学者这文章可以让你从配置mssql 到让php连接mssql数据 ...

  3. 具体解释VB中连接access数据库的几种方法

    在VB中,连接ACCESS数据库的方法主要有以下三种 使用ADO对象,通过编写代码訪问数据库 Connection 对象 ODBC数据源 使用ADO Data 控件高速创建数据库连接 有三种连接方法 ...

  4. 详解VB中连接access数据库的几种方法

    在VB中,连接ACCESS数据库的方法主要有下面三种 使用ADO对象,通过编写代码访问数据库 Connection 对象 ODBC数据源 使用ADO Data 控件快速创建数据库连接 有三种连接方法 ...

  5. java web项目中连接mysql数据库,javaweb之eclipse工程连接mysql数据库

    javaweb之eclipse工程连接mysql数据库 准备工作: 1.在mysql官网下载mysqlconnection的jar包 输入网址:mysql.com-点击DOWNLOADS--下拉选择M ...

  6. odbc mysql 配置文件_ODBC连接主流数据库的配置方法

    准备工作 安装ODBC基本组件: # yum install -y unixODBC unixODBC-devel 安装完成后可用odbcinst -j命令查看安装配置文件所在的位置,有两个比较常用的 ...

  7. C 连接ACCESS数据库代码实例

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 今天一个 ...

  8. 条码打印软件如何连接Access数据库

    中琅条码打印软件中连接Access数据库,不同于中琅条码打印软件连接MySQL或者SQL Server数据库需要提供数据库的访问权限(服务器,账号,密码等).连接Access数据库和Excel.TXT ...

  9. vb adodb mysql_VB6实现连接Access数据库的ADODB代码实现方法

    本文实例讲述了使用ADODB.Connection连接access数据库的方法,驱动类型版本为:Microsoft.Jet.OLEDB.4.0.在VB的数据库操作中,连接数据库是第一步,也是最基本的, ...

最新文章

  1. Python 如何查看内存地址
  2. LR为什么要先离散化
  3. SAP MM 事务代码MI31之思考之续集
  4. java 不包含 字母和数字_Java String - 查看字符串是否仅包含数字而不包含字母
  5. 2020-11-19(栈帧)
  6. PHP7添加opcache.so模块
  7. vant.dialog.alert什么方法让他隐藏_今天才发现,美工刀上面还隐藏着一个小机关,厉害又实用,学学吧...
  8. mysql获取当前时间的订单_mysql获取当前时间,及其相关操作
  9. 1.3Python快速入门
  10. HDU 1166 敌兵布阵 【线段树-点修改--计算区间和】
  11. 回溯法——设计一个算法在1、2、3... 9(顺序不能变)数字之间插入+ 或 - 或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性和全排列
  12. GNUstep 运行gui程序
  13. 【原生】封装一个判断数据类型的函数的方法,准确判断一个数据的类型
  14. 基于Spring开发的一个BIO-RPC框架(对小白很友好)
  15. cortex a7 a53_镜头测试:蔡司红T28/2.8+索尼微单A7实拍北京景山公园
  16. Pytorch:VGG16
  17. 怎么用html把字写到图片上,用HTML代码在图片上写字
  18. Python IO编程详解
  19. 支付宝公众服务接口和微信公众平台接口的区别
  20. 腾讯云双十一活动读解

热门文章

  1. python乐观锁代码实现_Django的乐观锁与悲观锁实现
  2. j计算机专业英语题库,计算机专业英语单词习题
  3. .Net Framework4.5中Asp.net mvc使用Singal R轮训实现导入进度条功能
  4. c#學習筆記--Visual Studio 使用
  5. 用xargs处理带空格文件名
  6. 从Java里调用R – JRI的设置方法
  7. 【堪萨斯州立大学】电子和计算机工程系智能能源研究室、硬件安全实验室招募博士,提供多个全额奖学金机会...
  8. IoU-aware的目标检测,显著提高定位精度
  9. 百万奖金!天池发起广东工业制造创新大赛
  10. 利用OpenCV抠图技术实现影视中“隐身”特效