如提,小弟我最近在專研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網站可下載), 至少還能夠多工