[實作隨筆]設定JSP(jdbc) 和 ODBC(ACCESS 2007)的連結

[實作隨筆]設定JSP 和 ODBC的連結:

新增一個檔名為"db1.accdb"資料庫檔,
並假設檔案放在"d:/database".

Control Panel > System and Security > Administrative Tools -> Data Sources (ODBC)
根據以上順序,開啟OBDC Data Source Administrator視窗,
選擇 System DNS,(千萬別選錯喔).

接著按"Add",
選擇"Microsoft Access Driver (*.mdb,*.accdb)"後按Finish.
Data Source Name填一個名字,後續的資料庫存取都用這個名字.
與此同時,按"Select"選擇你剛剛新增的"db1.accdb"檔.
如前,應該是"d:/database/db1.accdb"

以上動作即完成設定JSP和ODBC的連接工作.

接著用以下的code測試資料庫系統是否能正常運作,

<%@ page contentType="text/html;charset=big5" %>
<%@ page import= "java.sql.*" %>
<html>
<head><title>Ex46</title></head><body>
<p align="center">
<font size="5"><b>Front Page of Ex46</b></font>
</p>
<center>
create new table "db1"
<%
  String JDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
  String connectDB="jdbc:odbc:db1";

  Class.forName(JDriver);
  Connection con = DriverManager.getConnection(connectDB);
  Statement stmt = con.createStatement();
  String query = "create table Content ( " 
                      + "ID Text(20) PRIMARY KEY," 
                      + "BKName Text(20),"
                      + "Writer Text(10)," 
                      + "Price Number"
                      + ")";
   stmt.executeUpdate(query);

   stmt.close();
   con.close();
%>
</body>
</html>


如果沒有問題的話,執行以上的code後,應該就能在你的db1內新增一個table.


注意:
在環境建構完畢後,我發生了中文亂碼的問題,
首先我的OS是(英文版)win7+tomcat+(英文版)Ms access 20007,
在寫一個JSP網頁對access資料庫做讀取時,
從資料庫讀出來的繁中字元都變成亂碼,
嘗試了很多方法都無法解決,

於是我換了一個系統,
即用(中文版)XP+tomcat+(中文版)MS access 2007,
結果不必作任何設定,即完成中文資料的正確讀取.
所以在無計可施下,唯有先這樣.
猜想是英文版的Ms access 2007才會發生這種問題.


更新:
關於亂碼的問題終於解決了,參考這一篇:
http://www.javaworld.com.tw/jute/post/view?bid=6&id=274297&tpg=1&ppg=1&sty=0
<%@ page contentType="text/html;charset=big5" %>
<%@ page import= "java.sql.*" %>
<%@ page import= "java.io.*" %>
<html>
<head>
<title>Ex48</title></head><body>
<p align="left">
<font size="5"><b>Show</b></font>
</p>
<%
  String JDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
  String connectDB="jdbc:odbc:BookStore";
  StringBuffer sb = new StringBuffer();
 
  Class.forName(JDriver);
  Connection con = DriverManager.getConnection(connectDB);
  Statement stmt = con.createStatement();
 
  String sql= "select * from Content where myKey < 100";
 
          if (stmt.execute(sql))
            {
              ResultSet rs = stmt.getResultSet();
              ResultSetMetaData md = rs.getMetaData();
              int colCount = md.getColumnCount();
              sb.append("<TABLE CELLSPACING=10><TR>");
              for (int i = 1; i <= colCount; i++)
                  sb.append("<TH>" + md.getColumnLabel(i));
              while (rs.next())
                {
                  sb.append("<TR>");
                  for (int i = 1; i <= colCount; i++)
                    {
                      sb.append("<TD>");
                      Object obj = rs.getObject(i);
                      if (obj != null){
                          sb.append(new String(obj.toString().getBytes(),"big5"));
                      }
                      else
                          sb.append(" ");
                    }
                }
              sb.append("</TABLE>\n");
            }
           else
              sb.append("<B>Update Count:</B> " +
                                 stmt.getUpdateCount());
 
  String result= sb.toString();
  out.print(result);
 
  stmt.close();
  con.close();
%>
</body>
</html>

你可能感兴趣的:(sql,tomcat,jsp,jdbc,Access)