小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

msflexgrid 顯示數(shù)據(jù)行

 昵稱WYxW8 2005-08-15

我數(shù)據(jù)庫中的一個表中有2萬多行數(shù)據(jù)

在使用MSHFlexGrid1進行顯示時,最多只能顯示1016行

我已經(jīng)安裝了SP6,SP5,但問題依舊

附:后發(fā)現(xiàn)

sql="select * from xx"

能顯示2萬多行全部數(shù)據(jù)

sql="SELECT a.a1,b.b2 FROM (a INNER JOIN b ON a.id = b.id) WHERE (((a.jsnd)=‘2005‘))"
時只能顯示1036行

當(dāng)
sql="SELECT a.a1,b.b2,c.c3 FROM (a INNER JOIN b ON a.id = b.id) INNER JOIN tb_zgdwlx ON c.id =b.id WHERE (((a.jsnd)=‘2005‘))"
時就只能顯示1016行了

我將conn.ConnectionString修改為
conn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=sj;Data Source=XW;Connect Timeout=30"

故障依舊

懷疑時SQL語句查詢太慢的問題,改成 存儲過程后能給MSHFlexGrid1填充1032行,沒有太大改變

請大家?guī)椭?BR>

 

 

終于發(fā)現(xiàn)了問題
當(dāng)使用
rec.CursorLocation = adUseClient
時,能正確的返回全部數(shù)據(jù)

這是什么原因呢?對做了數(shù)年數(shù)據(jù)庫開發(fā)的我也很迷惑

找了點材料

見下,
××××××××××××××××××××××××××8
  1. 什幺是光標(biāo)?

光標(biāo),也有人稱為游標(biāo)。概括的講,它是基于記錄的。

過去,關(guān)系型數(shù)據(jù)庫沒有象現(xiàn)在這樣被廣泛的應(yīng)用。那時候,人們大多使用 dBase 這樣的小型數(shù)據(jù)庫軟件。這類數(shù)據(jù)庫確切的說應(yīng)為數(shù)據(jù)文件管理軟件。他們是面向記錄的。

不過,這種方式也許更符合人們的習(xí)慣。比如,我們在電話本中查找號碼,在學(xué)生檔案中查找檔案,最終都要歸結(jié)于其中的一個號碼,一個檔案,那就是一條記錄。現(xiàn)實生活中,我們在一張表格中尋找某一項時,可能會用手一條一條逐行的掃過,以幫助我們找到所需的那條記錄。對應(yīng)于數(shù)據(jù)庫來說,這就是光標(biāo)的模型。所以,你可以這樣想象:表格是數(shù)據(jù)庫中的表,而我們的手好比是光標(biāo)。

所以,當(dāng)你使用類似 .MoveNext,.MoveLast 這樣的語句時,覺得再自然不過了。

現(xiàn)在,你明白什幺是光標(biāo)了吧。光標(biāo)就是數(shù)據(jù)的 ‘ 定位系統(tǒng) ‘ 。

這個 ‘ 定位系統(tǒng) ‘ 粗分有兩種:服務(wù)器光標(biāo)和客戶光標(biāo)。對應(yīng)于 ADO 中的 CursorLocation 。舉例來說:

Set rs = Server.CreateObject("ADODB.RecordSet")
rs.CursorLocation = adUseServer      ‘缺省,使用服務(wù)器光標(biāo)
.....
rs.CursorLocation = adUseClient      ‘使用客戶光標(biāo)

2. 什幺是服務(wù)器光標(biāo)?

或者稱為 API 服務(wù)器光標(biāo)。

假設(shè)你要查詢有關(guān)編程語言的書,寫成 SQL 語句就是:SELECT book_id,book_title FROM books WHERE book_catalog = ‘編程‘ ORDER BY book_title,同時你指定使用服務(wù)器光標(biāo)。

這條語句發(fā)送到服務(wù)器,服務(wù)器對數(shù)據(jù)進行檢索,將符合查詢條件的記錄集合放入臨時表(對某些光標(biāo)類型是這樣)中。每當(dāng)你進行 .MoveNext 操作,服務(wù)器就會發(fā)送一條記錄到客戶端的緩沖區(qū),然后你才可以使用它。

3. 什幺是 CacheSize ?

繼續(xù)上面的例子,假設(shè)符合查詢條件的記錄有100個,也就是說,用 .MoveNext 這種方法遍歷該結(jié)果集需要同服務(wù)器交互100次。我們可以通過設(shè)置 CacheSize 使客戶與服務(wù)器的通信變少。上面的例子其實就是 CacheSize=1 的情況,這是缺省值。

假設(shè) CacheSize=4,當(dāng) RecordSet 對象打開時,服務(wù)器發(fā)送4條記錄到客戶端。前4次的 .MoveNext 操作實際上是在客戶緩沖區(qū)中得到數(shù)據(jù),當(dāng)?shù)?次 .Movenext 時,服務(wù)器才發(fā)送下一個4條記錄。由此,減少了客戶與服務(wù)器間的網(wǎng)絡(luò)通信。

那幺是不是說 CacheSize 越大越好呢?千萬不要想當(dāng)然。萬事都有兩面性,CacheSize 也一樣。客戶端請求數(shù)據(jù),服務(wù)器發(fā)送數(shù)據(jù),這個過程有點象交通管理。CacheSize 過高,會阻塞交通,甚至引起數(shù)據(jù)丟失(比如當(dāng) Cachesize 大于客戶端緩沖區(qū)時)。對于不同的應(yīng)用,所取的值也不同。

另外要指出的是,使用任何形式的光標(biāo)都不是最有效的訪問數(shù)據(jù)的方法,Cachesize 有的時候并不是瓶頸,盡量將使用光標(biāo)的程序轉(zhuǎn)換為面向結(jié)果集的程序,性能會提高很多。

3. 什幺是客戶光標(biāo)?

既然光標(biāo)是數(shù)據(jù)的 ‘ 定位系統(tǒng) ‘,那幺在客戶端也可以完成。

客戶光標(biāo)的產(chǎn)生由來已久,當(dāng)初是為了彌補服務(wù)器的不足(有些數(shù)據(jù)庫引擎就不支持光標(biāo))。隨著服務(wù)器光標(biāo)的出現(xiàn),客戶光標(biāo)似乎已經(jīng)過時了,不過還是那句話:萬事都有兩面性,在 internet 上,與數(shù)據(jù)庫的連接并不是永久的,使用客戶光標(biāo)能使我們獲得同使用服務(wù)器光標(biāo)一樣的功能。

當(dāng) CursorLoction 屬性設(shè)成 adUseClient 時,微軟的光標(biāo)服務(wù)( Cursor Service )創(chuàng)建 RecordSet 對象,用前向 / 只讀的光標(biāo)方式從服務(wù)器將所有查詢結(jié)果檢索出來,并且存儲在客戶緩沖區(qū)中。當(dāng)應(yīng)用程序通過 ADO 請求數(shù)據(jù)時,光標(biāo)服務(wù)就從客戶緩沖區(qū)中檢取數(shù)據(jù)。這種方式在連接遠(yuǎn)程服務(wù)器時非常有用,它會提高應(yīng)用程序的性能。如果你訪問的數(shù)據(jù)庫是 Jet 數(shù)據(jù)庫( Access ),而且在本地,那么用客戶光標(biāo)非但不提高性能,還會使性能下降。這時候,數(shù)據(jù)將被緩存兩次,數(shù)據(jù)庫一次,光標(biāo)服務(wù)一次。

如果考慮應(yīng)用的功能,客戶光標(biāo)功能是很完善的,它能支持某些數(shù)據(jù)庫不能完成的操作( 視數(shù)據(jù)庫的情況而定 )。

4. 什幺是 DisConnected RecordSet ?

我們使用了客戶光標(biāo),就可以斷開與數(shù)據(jù)庫的連接,釋放 Connection 對象。這樣的結(jié)果集就是 DisConnected RecordSet。舉例說明:

Dim c As New ADODB.Connection
Dim r As New ADODB.Recordset
On Error GoTo handler
  
c.ConnectionString = connectStr
c.CursorLocation = adUseClient
c.Open
Set r.ActiveConnection = c
r.Open SqlText, , adOpenKeyset, adLockBatchOptimistic, -1
Set r.ActiveConnection = Nothing   ‘ This disconnects the recordset.
c.Close
Set c = Nothing
......
......  
‘ Recordset is now in disconnected state; do something with it.
r.Close
Set r = Nothing
......

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多