六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

避開使用DSN連接數據庫

[摘要]是否仍舊在使用ODBC系統或文件DSN連接數據庫?請用OLEDB提供者代替它,這是一種速度更快而且不需要使用DSN的數 據庫連接技術。使用OLEDB提供者,你不必再為了創建系統DSN懇求ISP(或數據庫管理員/網站管理員),也不必為了網站 文件位置的變化而修改配置。 問: 我看到過大量通過數據...

是否仍舊在使用ODBC系統或文件DSN連接數據庫?請用OLEDB提供者代替它,這是一種速度更快而且不需要使用DSN的數
據庫連接技術。使用OLEDB提供者,你不必再為了創建系統DSN懇求ISP(或數據庫管理員/網站管理員),也不必為了網站
文件位置的變化而修改配置。

問:

我看到過大量通過數據資源名字(DSN)連接數據庫的例子,不過我現在想不通過DSN連接數據庫。在ASP中可以實現
這一點嗎?能否舉幾個具體的例子說明?我希望新的連接方法不依賴于系統DSN,但又可以在數據庫連接串中指定驅動程
序、服務器名字、數據庫、數據庫賬號和密碼。

答:

如果你使用的是SQL Server 7,請使用下面的數據庫連接串:

strConnString = "DSN='';DRIVER={SQL SERVER};" & _
"UID=myuid;PWD=mypwd;" & _
"DATABASE=MyDb;SERVER=MyServer;"



其中最重要的參數在于“DRIVER=”部分。如果你希望繞過ODBC,直接通過OLEDB訪問SQL Server(一般來講這種方法
速度更快),請使用下面這種連接串:
strConnString ="Provider=SQLOLEDB.1;Password=mypassword;" & _
"Persist Security Info=True;User ID=myuid;" & _
"Initial Catalog=mydbname;" & _
"Data Source=myserver;Connect Timeout=15"



如果你要使用數據庫連接串,但又不熟悉OLEDB提供者的連接串語法,請使用Visual Basic的數據環境設計器或ADO數
據控件創建一個,然后把它拷貝出來用于ADO連接對象就可以了。在立即窗口中,輸入命令?
dataenvironment1.connection1.ConnectionString可以得到連接串的代碼。請注意Microsoft Access連接串的語法有所不
同,參見《Syntax for DSN-Less Connection for MS Access》

參見:《ASP性能優化指南》中的數據庫連接部分。

2、記錄集中記錄總數的計算
1062


剛開始在ASP頁面中使用記錄集的時候可能經常會遇到這個問題。如果你想訪問記錄集中的數據,首先必須保證記錄
集中確實包含數據。請記住,如果記錄集中沒有數據,系統將顯示非常不友好的運行時錯誤信息。你可以使用下面的代碼
去解決這種問題。

問:

我已經有數年的VB經驗,但剛剛開始學習ASP和VBScript。現在我要打開一個Access數據庫,計算其中的記錄總數并
在Web頁面中顯示這些信息。數據庫的名字叫sean.mdb,其中包含一個people表,表中有三個記錄。然而,當我運行腳本時
它總是說有-1個記錄。

是否可以告訴我下面的代碼什么地方出錯了?
< %

Set objConn = Server.CreateObject("ADODB.Connection")
Set objRst = Server.CreateObject("ADODB.Recordset")

objConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=
" & Server.Mappath("seannewelldbsean.mdb"))

strSQL = "SELECT * FROM people"

objRst.Open strSQL, objConn

Response.write( "< P >" & strSQL & "< /P >" )
Response.write("< H2 >There are " & objRst.RecordCount &
" People in the database< /H2 >")

If objRst.RecordCount > 0 Then
objRst.MoveFirst
Do While Not objRst.EOF
Response.write( "Name = " & objRst.fields(0) )
objRst.MoveNext
Loop
else
Response.write( "It's EMPTY!" )
End If

objRst.Close
Set objRst = Nothing
objConn.Close
Set objConn = Nothing
% >



答:

在低版本的MDAC中RecordCount屬性返回-1。請在你的服務器上把MDAC文件更新到最新的版本,最新的MDAC文件可以
在www.microsoft.com/data找到。

如果Web服務器由ISP管理而你又無權配置它,無法升級MDAC文件,那么必須修改代碼。

原來使用下面的代碼檢查記錄集中是否有記錄:
If objRst.RecordCount > 0 Then ...



請改用下面的代碼:
If objRst.BOF and objRst.EOF Then
' 記錄集為空
Else
Do While not objRst.EOF
' 處理記錄集
objRst.MoveNext
Loop
End If



2000年06月30日更新,新西蘭的Daryl Egarr說:

可以看出,讀者提問中的代碼并沒有錯誤。問題在于“在低版本的MDAC中RecordCount屬性返回-1”,這一判斷本身
并沒有錯誤,然而從提問內容來看作者不應該作出這種假定,因為原問題中沒有任何一行代碼意味著使用了低版本的
MDAC。

作者考慮問題的方向不對,問題的要點在于并非所有的游標類型都支持所有的屬性和方法(不管采用哪種數據庫系
統)。問題中代碼出現錯誤的真正原因在于使用默認的CursorLocation時:
Recordset.CursorLocation = adUseServer

RecordCount屬性只有在記錄集的CursorType為1或者3(即adOpenKeyset,adOpenStatic)時才是可用的。出現錯誤
的代碼沒有指定CursorType,也就是使用了0類型的游標(即adOpenForwardOnly,這是速度最快的游標類型),此時對
RecordCount的引用將一直返回0。

解決問題的方法很簡單,只要把原來代碼中的:
objRst.Open strSQL, objConn

改成:
objRst.Open strSQL, objConn ,1




主站蜘蛛池模板: 天天射天天干天天舔 | 亚洲第1页 | 青青伊人影院 | 亚洲精品在线免费观看视频 | 三级www| 青青热久免费精品视频网站 | 最近手机中文字幕大全首页 | 青春草国产成人精品久久 | 小视频在线观看免费播放 | 手机天堂网| 日本在线观看网址 | 亚洲视频在线免费 | 亚洲综合视频在线 | 性荡视频 | 四虎影视免费永久在线观看黄 | 中文字幕第66页永久乱码 | 越南高清xxxxx18 | 天天射天天怕 | 天堂在线最新版www中文 | 天天看天天射天天碰 | 五月婷婷综合在线 | 视频二区中文字幕 | 亚洲精品午夜久久aaa级久久久 | 任我鲁这里有精品视频在线播 | 天堂亚洲国产日韩在线看 | 性刺激欧美三级在线现看中文 | 伊人婷婷在线 | 日本高清在线播放 | 亚洲精品在线免费观看视频 | 日韩国产综合 | 亚洲欧美一区二区三区麻豆 | 亚洲国产精品日韩专区avtube | 色屁屁影院免费观看入口 | 手机看片日韩国产一区二区 | 欧美中文字幕一区 | 日本免费一区二区三区看片 | 人人做人人看 | 日本网络视频www色高清免费 | 天堂bt资源新版在线 | 日本在线观看视频网站 | 视频一区视频二区在线观看 |