<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        JavaWeb項目中連接Access數(shù)據(jù)庫

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-09 15:29:04
        文檔

        JavaWeb項目中連接Access數(shù)據(jù)庫

        JavaWeb項目中連接Access數(shù)據(jù)庫:Java Web 項目 中 連接 Access 數(shù)據(jù)庫 注:本篇博客是對前幾天的 JDBC 連接 Access 數(shù)據(jù)庫 的幾種方式 這篇的升級。由于在做一些小 項目 的時候遇到的問題,因此才決定寫這篇博客的。昨天已經(jīng)將博客發(fā)布了,但是后來經(jīng)過一些驗證有點問題,所以今天改了
        推薦度:
        導(dǎo)讀JavaWeb項目中連接Access數(shù)據(jù)庫:Java Web 項目 中 連接 Access 數(shù)據(jù)庫 注:本篇博客是對前幾天的 JDBC 連接 Access 數(shù)據(jù)庫 的幾種方式 這篇的升級。由于在做一些小 項目 的時候遇到的問題,因此才決定寫這篇博客的。昨天已經(jīng)將博客發(fā)布了,但是后來經(jīng)過一些驗證有點問題,所以今天改了

        Java Web 項目 中 連接 Access 數(shù)據(jù)庫 注:本篇博客是對前幾天的“ JDBC 連接 Access 數(shù)據(jù)庫 的幾種方式 ”這篇的升級。由于在做一些小 項目 的時候遇到的問題,因此才決定寫這篇博客的。昨天已經(jīng)將博客發(fā)布了,但是后來經(jīng)過一些驗證有點問題,所以今天改了

        Java Web項目中連接Access數(shù)據(jù)庫

        注:本篇博客是對前幾天的“JDBC連接Access數(shù)據(jù)庫的幾種方式”這篇的升級。由于在做一些小項目的時候遇到的問題,因此才決定寫這篇博客的。昨天已經(jīng)將博客發(fā)布了,但是后來經(jīng)過一些驗證有點問題,所以今天改了一下重新的發(fā)布了。

        老師決定期末考試采用access數(shù)據(jù)庫實現(xiàn)增刪改查,我認(rèn)為現(xiàn)在的我已經(jīng)沒有問題了,但是以前都是在JSP頁面中連接access數(shù)據(jù)庫,無論是以下的那種方式都進行了連接的練習(xí),但是現(xiàn)在我想讓我的項目中的訪問access數(shù)據(jù)庫的java代碼,封裝到DAO中,在DAO中連接數(shù)據(jù)庫,沒有和Servlet API有任何的關(guān)系。對于大多數(shù)人都會優(yōu)先選擇使用ODBC數(shù)據(jù)源的方式或者是使用絕對路徑的方式連接access數(shù)據(jù)庫,但是我個人認(rèn)為,這樣做不太好,如果采用這樣的方式,項目做好后,放到他人的服務(wù)器上是無法運行的,因為數(shù)據(jù)庫的信息不存在了,而我現(xiàn)在的想法是無論項目放那一臺支持jdbc-odbc機器的服務(wù)器上都可以連接數(shù)據(jù)庫,并運行項目,所以要完成這樣的操作,只有在讓access數(shù)據(jù)庫的mdb文件隨著項目的移動而移動,因此,在Java Web項目,將mdb文件放入到WebRoot下或者其子目錄下。但是在DAO中如何得到該mdb的真實路徑呢?

        其實,這個和在JSP中動態(tài)的得到mdb文件的路徑的思想基本上是一樣。

        先復(fù)習(xí)一下jsp中使用access數(shù)據(jù)庫吧!

        例如有如下的Access數(shù)據(jù)庫student,表basic,以及6條記錄,現(xiàn)在通過幾種方式在Jsp中將他們的數(shù)據(jù)顯示出來。如圖所示:

        對于幾種連接Access數(shù)據(jù)庫的方式,基本上都是基于JDBC-ODBC方式的,當(dāng)然也有純JDBC驅(qū)動的方式。這里我暫時就不說了。對于這幾種方式,除了取得連接之處不同外,其他的代碼都是一樣的。所以這里先寫出取得連接的幾種方式,然后再用完整的代碼進行顯示。

        方式一:通過JDBC-ODBC方式橋連直接連接:

        1、對于這種方式,首先要建立ODBC數(shù)據(jù)源,我的系統(tǒng)是Win7系統(tǒng),所以依次選擇“控制面板----管理工具----數(shù)據(jù)源(ODBC)”,打開數(shù)據(jù)源管理器,如圖所示:

        2、在“系統(tǒng)DSN”選項卡中,單擊“添加”按鈕,打開創(chuàng)建數(shù)據(jù)源對話框,選擇Access數(shù)據(jù)庫的驅(qū)動程序“Microsoft Access Driver(*.mdb)”如圖所示:

        3、單擊完成按鈕,出現(xiàn)如下對話框,在數(shù)據(jù)源名中輸入數(shù)據(jù)源的名字“JDBC-ODBC”,單擊選擇按鈕,選擇要操作的數(shù)據(jù)庫“student.mdb”,單擊確定按鈕完成數(shù)據(jù)源的配置。如圖所示:

        4、數(shù)據(jù)源配置好了,就可以寫獲取連接的代碼了,如下所示:

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

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

        Connection con = DriverManager.getConnection(url);

        以上的三行代碼就是通過JDBC-ODBC連接Access數(shù)據(jù)庫的關(guān)鍵代碼。這種方式連接可以很方便的記憶連接的url代碼,這是很有用的。后面的代碼就是正常寫了。

        方式二:通過數(shù)據(jù)庫所在的絕對路徑方式連接

        上面說過這里的幾種方式都是基于JDBC-ODBC方式。所以加載驅(qū)動的Class.forName()中的參數(shù)都是“sun.jdbc.odbc.JdbcOdbcDriver”。對于這種方式我將student.mdb文件放在了e盤的根目錄下,在使用的時候,直接寫上該數(shù)據(jù)庫的絕對路徑就行了。獲取連接的代碼如下所示:

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

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

        Connection con = DriverManager.getConnection(url);

        對于這種方式不用配置數(shù)據(jù)源,雖然代碼比較多,但是很好理解的。也是很常用的。

        方式三:通過請求來獲取數(shù)據(jù)庫的絕對路徑方式連接

        對于這種方式,我個人認(rèn)為很適合在Java Web應(yīng)用中使用,將做好的應(yīng)用給別人,別人也可以使用。我將該數(shù)據(jù)庫文件放在了Web應(yīng)用的根路徑下。那么動態(tài)的獲取連接的代碼如下所示:

        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);

        以上便是三種方式獲取連接。接下來便是顯示的代碼了。代碼如下所示:

        <%@ page language="java" import="java.util.*,java.sql.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
        
        
        
         
         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();
         %>
         
        學(xué)號 姓名 年齡 地址 語文 數(shù)學(xué) 英語
        <%=rs.getString(1) %> <%=rs.getString(2) %> <%=rs.getInt(3) %> <%=rs.getString(4) %> <%=rs.getInt(5) %> <%=rs.getInt(6) %> <%=rs.getInt(7) %>

        運行JSP結(jié)果如下所示:

        當(dāng)將連接改為第二種方式的時候還是好使的,JSP代碼如下所示:

        <%@ page language="java" import="java.util.*,java.sql.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
        
        
         
         JDBC連接Access數(shù)據(jù)庫的第二種方式
         
         
         
         <%
        
         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
         String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+"e://student.mdb ";
         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();
         %>
         
        學(xué)號 姓名 年齡 地址 語文 數(shù)學(xué) 英語
        <%=rs.getString(1) %> <%=rs.getString(2) %> <%=rs.getInt(3) %> <%=rs.getString(4) %> <%=rs.getInt(5) %> <%=rs.getInt(6) %> <%=rs.getInt(7) %>

        運行JSP結(jié)果如下所示:

        當(dāng)將連接改為第三種方式的時候還是好使的,JSP代碼如下所示:

        <%@ page language="java" import="java.util.*,java.sql.*" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
        
        
         
         JDBC連接Access數(shù)據(jù)庫的第三種方式
         
         
         
         <%
         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);
         Statement st = con.createStatement();
         String sql = "select * from basic";
         ResultSet rs = st.executeQuery(sql);
         while(rs.next())
         {
         %>
         
         <%
         }
         rs.close();
         st.close();
         con.close();
         %>
         
        學(xué)號 姓名 年齡 地址 語文 數(shù)學(xué) 英語
        <%=rs.getString(1) %> <%=rs.getString(2) %> <%=rs.getInt(3) %> <%=rs.getString(4) %> <%=rs.getInt(5) %> <%=rs.getInt(6) %> <%=rs.getInt(7) %>

        運行JSP結(jié)果如下所示:

        對于這種方式我的項目的目錄結(jié)構(gòu)如下所示:

        第三種方式正是現(xiàn)在要用的方式,可以在Java類中,訪問數(shù)據(jù)庫了。

        首先將mdb文件放入到WebRoot下面,當(dāng)點擊超鏈接的時候,將信息傳給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中就可以根據(jù)傳過來的path找到數(shù)據(jù)庫文件所在的路徑了。并成功的連接到數(shù)據(jù)庫了,實現(xiàn)了分層理念。

        但是這樣出現(xiàn)了一個問題,如果放在WebRoot下,別人知道數(shù)據(jù)庫的位置,不就可以訪問了嗎?

        為此我想了好久,既然是在Java類中訪問數(shù)據(jù)庫,那么能不能將mdb文件放在src下邊呢,答案是可以的。這樣在MyEclipse或Eclipse中,就將該文件復(fù)制到了Web項目的WEB-INF下的classes根路徑下,不就能訪問了,于是我的URL代碼變成了這樣:

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

        但是結(jié)果失敗了,沒有找到文件,但后來將該文件放到“項目”下,就好使了,但是這樣一旦給別人,就又不行了,所以還得放到src下,只有這樣才會放到WebRoot或WebContent下,才會放到classes下,才能被java類所訪問,才能給別人項目就能運行。但是如何才能找到classes目錄下的數(shù)據(jù)庫文件呢。一直在找某個方法,直到找到了如下的方法:

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


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

        通過Class類的getResource()方法查找當(dāng)前類所在的目錄,這里dao類在com.student.dao包下,那么該方法返回的就是該類的路徑,如果參數(shù)是“/”的化,返回的就是classes的根目錄,這樣就可以得到classes下的數(shù)據(jù)庫mdb文件的所在路徑。再通過URL類的getPath()方法得到字符串類型的文件路徑在服務(wù)器上的真實路徑。

        代碼如下所示:

        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中,就可以訪問到數(shù)據(jù)庫了。就可以在Java Web項目中,使用Access數(shù)據(jù)庫實現(xiàn)MVC設(shè)計模式,并添加DAO和VO了。對于使用Servlet API將mdb文件的路徑傳給dao是一種方式,使用dao封裝Access也是一種方式,有時為了方便可以將mdb文件放到WebRoot下,通過JSP或者是Servlet將數(shù)據(jù)庫文件的路徑傳給dao。我覺的Access數(shù)據(jù)庫這一點比較好,可以將數(shù)據(jù)庫和項目一起移動。通關(guān)這兩種方式可以再任何的機器上運行。

        目前,我所知道的就是這么做,我也認(rèn)為這是比較好的作法。用Java語言連接數(shù)據(jù)庫,將數(shù)據(jù)庫文件放在和類路徑相同的目錄下是很好的作法。如果還有其他的辦法,希望大家提出來。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        JavaWeb項目中連接Access數(shù)據(jù)庫

        JavaWeb項目中連接Access數(shù)據(jù)庫:Java Web 項目 中 連接 Access 數(shù)據(jù)庫 注:本篇博客是對前幾天的 JDBC 連接 Access 數(shù)據(jù)庫 的幾種方式 這篇的升級。由于在做一些小 項目 的時候遇到的問題,因此才決定寫這篇博客的。昨天已經(jīng)將博客發(fā)布了,但是后來經(jīng)過一些驗證有點問題,所以今天改了
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 女人18毛片a级毛片免费| 国产香蕉九九久久精品免费| 亚洲国产成人VA在线观看| 亚洲精品天堂成人片AV在线播放| 日韩欧美亚洲国产精品字幕久久久| 99在线视频免费观看视频| 亚洲第一区视频在线观看| 亚洲精品动漫免费二区| 午夜爱爱免费视频| 鲁死你资源站亚洲av| 国产一区二区三区无码免费| 国产亚洲女在线线精品| 免费A级毛片无码A| 国产在线精品一区免费香蕉 | 国内精品乱码卡1卡2卡3免费| 亚洲精品福利网站| 成人午夜大片免费7777| 羞羞视频免费网站入口| 国产aⅴ无码专区亚洲av麻豆| 中国国语毛片免费观看视频| 亚洲AV人无码综合在线观看| 182tv免费观看在线视频| 亚洲成av人片不卡无码久久| 国产三级在线免费观看| 亚洲精品免费视频| jizz免费在线观看| 亚洲国产一区在线| 女人18毛片水最多免费观看| 成年大片免费高清在线看黄| 亚洲狠狠综合久久| 国产男女猛烈无遮挡免费视频网站| 色婷婷精品免费视频| 亚洲av色福利天堂| 成人人免费夜夜视频观看| 全黄A免费一级毛片| 97se亚洲综合在线| 日本媚薬痉挛在线观看免费| 国产免费内射又粗又爽密桃视频| 亚洲福利电影一区二区?| 国产在线不卡免费播放| 午夜不卡久久精品无码免费|