iT邦幫忙

0

ASP 導入 Access2007 資料庫

如提,小弟我最近在專研ASP,現在遇到大問題了!

就是有看到前輩的範本,用ASP編譯網站,用ACCESS(*.mbd)做資料庫連結
只要修改ACCESS內容,WEB上面就會跟著改變,新增也是一樣雙方同步
((我自己目前看到的是這樣))

想要自己編譯看看,可是找不到方法?
想請教一下前輩們,如何入門,讓我的ASP WEB 可以簡單的用ACCESS 做基礎連結呢?

謝謝各位!

不管您寫ASP、JSP、PHP或是 ASP.NET

原PO(發問者)您的基礎太弱了

可能要麻煩您找本書來看看
不然要把您教到會,要寫幾萬字吧

不管您用哪種程式語法來寫動態網頁,搭配DB的作法都一樣
都用SQL指令來操作DB(新增、刪除、修改、查詢)

資料庫連線不就是那四大步驟?
http://www.dotblogs.com.tw/mis2000lab/archive/2008/08/15/4918.aspx
初探ADO.NET #1,程式與資料庫互動的四大步驟


這四大步驟是我自己歸納的流程,不但對於 ASP、ASP.NET有用,轉型成PHP與JSP也是道理相同。如同武功高手打通任督二脈後,學什麼武功都快。只要瞭解這四大流程,我相信大部分需要連結資料庫的程式,都難不倒大家。
第一, 連接資料庫(Connection)。
第二, 執行SQL指令(又分成兩大類:取出資料、或是寫入資料)。
第三, 自由發揮(通常這一段是畫面或流程的設計)。
第四, 關閉資源(如:關閉資料庫的連接)。
接下來將會看幾段程式碼,各位讀者不需死記,只要稍微瞭解一下,簡單看過即可。後續的文章會有更深入的解說。
8
markshu
iT邦好手 1 級 ‧ 2013-03-02 18:31:40
最佳解答

工作上也會維護到asp的網站系統
ASP沒有要編譯 修改完成 直接放到iis就可以跑了

6
jt01220937
iT邦新手 5 級 ‧ 2013-03-02 14:52:51

ASP以access2007為資料庫是沒問題的, 你要學習的是如何連結資料庫, 印象中asp是採用OLE的方式.
你如果要學習ASP, 最好是買一本ASP的書籍, 一步一步的跟著做, 不會花太多時間. 有問題可以再提出來大家一起討論.

ASP 的書?! 好奇哪兒買的到... XD

8
la6972
iT邦好手 1 級 ‧ 2013-03-03 00:21:57

ADO如何取得資料表欄位資訊?

若要取得資料表欄位資訊,由以下RecordSet物件的屬性可得知:

ActualSize屬性:此筆資料的欄位實際大小。
DefinedSize屬性:此筆資料的所定義的欄位大小。
Type屬性:欄位類型,使用以下數字代表之:
文字text:200
日期時間date:135
整數int/識別碼:3
單精準度:4
雙精準度:5
備註memo:201
是否yes/no:17
Name屬性:欄位名稱。
NumericScale屬性:欄位小數部份的位數。
Precision屬性:欄位的整數和小數位數部份加起來的最多位數。
取得資料表欄位資訊例子

讓我們看一個於ASP程式碼當中使用ActualSize/DefinedSize/ Type/Name/NumericScale/Precision的例子。

譬如ASP程式碼rs2.asp如下:

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

Set rs1 = Server.CreateObject("ADODB.Recordset")

rs1.Open "產品",conn1,1,3

Response.Write "text<BR>"

Response.Write "ActualSize: " & rs1("名稱").ActualSize & "<BR>"

Response.Write "DefinedSize: " &rs1("名稱").DefinedSize & "<BR>"

Response.Write "Type: " & rs1("名稱").Type & "<BR>"

Response.Write "Name: " & rs1("名稱").Name & "<BR>"

Response.Write "NumericScale: " & rs1("名稱").NumericScale & "<BR>"

Response.Write "Precision: " & rs1("名稱").Precision & "<p>"

Response.Write "date<BR>"

Response.Write "ActualSize: " & rs1("日期").ActualSize & "<BR>"

Response.Write "DefinedSize: " & rs1("日期").DefinedSize & "<BR>"

Response.Write "Type: " & rs1("日期").Type & "<BR>"

Response.Write "Name: " & rs1("日期").Name & "<BR>"

Response.Write "NumericScale: " & rs1("日期").NumericScale & "<BR>"

Response.Write "Precision: " & rs1("日期").Precision & "<p>"

Response.Write "int/識別碼<BR>"

Response.Write "ActualSize: " & rs1("價格").ActualSize & "<BR>"

Response.Write "DefinedSize: " & rs1("價格").DefinedSize & "<BR>"

Response.Write "Type: " & rs1("價格").Type & "<br>"

Response.Write "Name: " & rs1("價格").Name & "<BR>"

Response.Write "NumericScale: " & rs1("價格").NumericScale & "<BR>"

Response.Write "Precision: " & rs1("價格").Precision & "<p>"

Response.Write "memo<BR>"

Response.Write "ActualSize: " & rs1("備註").ActualSize & "<BR>"

Response.Write "DefinedSize: " & rs1("備註").DefinedSize & "<BR>"

Response.Write "Type: " & rs1("備註").Type & "<BR>"

Response.Write "Name: " & rs1("備註").Name & "<BR>"

Response.Write "NumericScale: " & rs1("備註").NumericScale & "<BR>"

Response.Write "Precision: " & rs1("備註").Precision & "<p>"

Response.Write "yes<BR>"

Response.Write "ActualSize: " & rs1("刪除").ActualSize & "<BR>"

Response.Write "DefinedSize: " & rs1("刪除").DefinedSize & "<BR>"

Response.Write "Type: " & rs1("刪除").Type & "<p>"

%>

以上的 ASP程式碼rs2.asp,於用戶端使用瀏覽器,瀏覽執行的結果,顯示各欄位的欄位資訊,包括欄位實際大小(ActualSize)、定義的欄位大小(DefinedSize)、欄位類型(Type)、欄位名稱(Name)、欄位小數部份的位數(NumericScale)、整數和小數位數最多位數(Precision)等。

Attributes/State屬性

若要取得更詳細的資料表欄位資訊,譬如此欄位是否包括固定長度的資料、可接受Null的資料值、是否為自動編號的識別碼等,由以下RecordSet物件的屬性可得知:

Field物件的Attributes屬性:代表欄位的狀態,由以下值相加:
&H00000002:此欄位為memo類型。
&H00000004:此欄位可寫入資料。
&H00000008:不確定此欄位是否可寫入資料。
&H00000010:此欄位包括固定長度的資料。
&H00000020:此欄位可接受Null的資料值。
&H00000040:可能讀取到此欄位為Null的資料值。
&H00000080:此欄位為長位元(long binary)欄位,可使用AppendChunk和GetChunk方法。
&H00000100:此欄位包括自動編號的識別碼。
&H00000200:此欄位包括日期時間。
&H00001000:此欄位使用cache。
Attributes屬性也可以使用於Connection 物件,以取得資料庫連線的狀態。State屬性顯示物件的狀態:

Connection 物件的Attributes屬性:代表資料庫連線的狀態,由以下值相加,預設值為0:
&H00020000:正在呼叫CommitTrans。
&H00020000:正在呼叫RollbackTrans。
State屬性:顯示物件的狀態:
0:物件已經關閉。
1:物件已經開啟。
讓我們看一個於ASP程式碼當中使用Attributes/State屬性的例子。

譬如ASP程式碼rs17.asp如下:

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

Response.Write "<BR>conn1.Attributes: " & conn1.Attributes

Response.Write "<BR>conn1.State: " & conn1.Attributes

Set rs2 = Server.CreateObject("ADODB.Recordset")

rs2.Open "產品",conn1,1,1

For Each fld In rs2.Fields

Response.Write "<BR>" & fld.Name & "=" & hex(fld.Attributes)

Next

%>

以上的 ASP程式碼rs17.asp,於用戶端使用瀏覽器,瀏覽執行的結果,For Each fld In rs2.Fields取得所有欄位的訊息。顯示:

欄位類型為文字text欄位、日期時間date 欄位、整數int欄位、備註memo欄位,為可寫入資料(&H00000004)、可接受Null的資料值(&H00000020)、可能讀取到此欄位為Null的資料值(&H00000040)。
欄位類型為日期時間date 欄位、整數int欄位,為固定長度的資料(&H00000010)。
欄位類型為備註memo欄位,為長位元(long binary)欄位(&H00000040)。

4
player
iT邦大師 1 級 ‧ 2013-03-09 13:13:37

1.ASP是過時技術, 不容易Debug, 如果要找書, 請到圖書館找, 因為ASP的書現在很難賣, 也不太會有人買了 (ASP大約是 Win NT 4.0時出來的技術)

2.ASP是用ADO去連接資料庫, 用ADO去連Access的資料庫有幾個問題
a.Access檔案所在資料夾的權限, 請開必要的存取權限, 不然ADO無法存取Access檔案
b.無法像是SQL那樣可以同時間不同User同時存取, 只要有人寫入資料, 整個Access檔案是被鎖住的 (所以在ASP的時代, 我很早就改用SQL Server 6.5了, 而沒在使用Access)

3.ADO的東西, 在使用後請記得自己close, 不然他的記憶體不會主動釋放, 即使User的連線斷掉也一樣

4.與其還在用Access當資料庫, 還不如改用Microsoft SQL Server Express (免費, MS網站可下載), 至少還能夠多工

我要發表回答

立即登入回答