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

本文介绍如何设置JSP与ODBC的连接,并通过创建Microsoft Access数据库进行演示。此外,还提供了一个解决乱码问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

接著按"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才會發生這種問題.


更新:
關於亂碼的問題終於解決了,參考這一篇:
[url]http://www.javaworld.com.tw/jute/post/view?bid=6&id=274297&tpg=1&ppg=1&sty=0[/url]
[code]
<%@ 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>
[/code]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值