如提,小弟我最近在專研ASP,現在遇到大問題了!
就是有看到前輩的範本,用ASP編譯網站,用ACCESS(*.mbd)做資料庫連結
只要修改ACCESS內容,WEB上面就會跟著改變,新增也是一樣雙方同步
((我自己目前看到的是這樣))
想要自己編譯看看,可是找不到方法?
想請教一下前輩們,如何入門,讓我的ASP WEB 可以簡單的用ACCESS 做基礎連結呢?
謝謝各位!
ASP以access2007為資料庫是沒問題的, 你要學習的是如何連結資料庫, 印象中asp是採用OLE的方式.
你如果要學習ASP, 最好是買一本ASP的書籍, 一步一步的跟著做, 不會花太多時間. 有問題可以再提出來大家一起討論.
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)。
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網站可下載), 至少還能夠多工
iThome鐵人賽