怎樣使用VB開發基于Sybase的C/S軟件
發表于:2007-07-14來源:作者:點擊數:
標簽:
Sybase 數據庫 是Sybase公司 開發 的大型數據庫產品,一向以高 性能 和高 可靠性 而聞名于市場,在我國的應用已是十分廣泛。另外,因為Sybase的存儲過程可以按行返回記錄,對于復雜的查詢,可編寫存儲過程,因為存儲過程是預編譯了的(除非你要求調用時編譯
Sybase
數據庫是Sybase公司
開發的大型數據庫產品,一向以高
性能和高
可靠性而聞名于市場,在我國的應用已是十分廣泛。另外,因為Sybase的存儲過程可以按行返回記錄,對于復雜的查詢,可編寫存儲過程,因為存儲過程是預編譯了的(除非你要求調用時編譯),所以返回結果非???,而其它有的數據庫存儲過程是不能返回記錄集的(如
Oracle,除非采用Oracle提供的OLE Automation方法)
在微軟
Windows大行其道的今天,友好直觀的Windows界面成為用戶需要,Sybase的PowerBuilder是提供給開發人員的一個方便快捷的開發工具,但從性能上講它不是最優的,下面我談談怎樣利用VB5.0和VB6.0在Sybase For NT數據庫上進行開發,VB是MicroSoft公司提供的功能強大的開發工具,它在開發C/S數據庫軟件方面從綜合開發周期和性能上來講較之其它的開發工具有其優勢。
1、配置數據庫
服務器
?、?、在NT上安裝Sybase數據庫,直接運行Setup安裝程序,在Windows NT Product Selection Screen對話框中,復選language Moudles,并點擊Custom,在彈出對話框中US.English和Chinese一定要選取,這樣可很好支持中文。
?、?、在接口文件配置中,可稍后配置。
2、安裝Win9x客戶端或Win3x客戶端
和服務器安裝類似,在Product Set Select 對話框中選取相應產品,即客戶端是Win9x選取Windows 95 Products(32-bit versions),客戶端是Win3x則選取Windows Products(16-bit versions)。在用SQLEDIT生成接口文件時,注意選取正確的
網絡協議
3、安裝ODBC驅動程序,微軟沒有為Sybase提供ODBC驅動程序,你可向經銷商索取或到網上去“D”。
4、以上工作完成后,下面分別就VB5.0和VB6.0同Sybase服務器的連接和操作作一簡單介紹。
在VB5.0中,訪問遠程數據庫的較好方法是通過RDO(當然你也可以用DAO或直接使用ODBC)
兩種:DSN連接和無DSN連接,下示列程序均有說明
此處打開的是master數據庫,數據庫服務器名為WIND,
SQL Server 11,ODBC驅動程序是Sybase System 11,如用DSN連接,用控制面板ODBC驅動程序管理器,建立的DSN名是SybDSN
新建工程,在工程菜單中引用Microsoft Remote Data Object 2.0
Public enTest As rdoEnvironment 注釋:聲明rdo環境對象,為工程級全局變量
Public cnTest As rdoConnection 注釋:聲明rdo連接對象,為工程級全局變量
注釋:最好不設為局部,否則即使斷開連接,也將在數據庫服務器端中保存連接的緩沖區,將會
注釋:占用服務器資源,甚至可能造成服務器的性能降低甚至死鎖。
注釋:定義記錄集變量
Dim rsTest As rdoResultset
注釋:連接子程序
Public Function connectSybase() As Boolean
On Error GoTo ErrHandle
Dim strConnect As String
Set enTest = rdoEngine.rdoEnvironments(0)
enTest.UserName = "sa" 注釋:用戶名
enTest.Password = "password" 注釋:口令
注釋:通過下句與ODBC數據源進行連接,不需用戶選擇數據源
Set cnTest = enTest.OpenConnection(dsName:="SybDSN", _
Prompt:=rdDriverCompleteRequired)
注釋:注意:如果你不想建立DSN,可采取無DSN連接方法如下:
注釋:將上句改為 Set cnTest = enTest.OpenConnection(dsName:="", _
注釋: Prompt:=rdDriverNoPrompt, _
注釋: Connect:="driver={Sybase System 11};" _
注釋: & "srvr=WIND;database=master;")
connectSybase = True
Exit Function
ErrHandle:
connectSybase = False
End Function
Private Sub Form_Load()
Dim strSQL As String
if connectSybase then
strSQL="Select * from sysusers" 注釋:strSQL可以是SQL語句(塊),存儲過程
Set rsTest = cnTest.OpenResultset(strSQL, rdOpenDynamic)
else
msgbox "打開數據庫失敗"
Exit sub
end if
Do Until rsTest.EOF
De
bug.print rstest.fields(0),rstest.field(1)
rsTest.MoveNext
Loop
End Sub
VB6.0的在數據庫方面的新特性,使用ADO對象,和OLE DB。微軟建議新的數據庫工程采用ADO。此處先將ADO,OLE DB作一簡介:
ADO使得客戶端應用程序能夠通過任何OLE DB提供者來訪問和操作數據庫服務器中的數據。ADO最主要的優點是易于使用、速度快、內存支出少 和磁盤遺跡小。
OLE DB是新的底層接口。它定義了一種通用的數據訪問范例。也就是說,OLE DB并不局限于ISAM、Jet甚至關系數據源,但是它能夠處理任何 類型的數據,而不考慮它們的格式和存儲方法。由于接口比較復雜,不能在Visual Basic中直接訪問OLE DB。ADO封裝并且實現了OLE DB的所有功能。 VB 6.0對ADO有完整的支持,可以通過ADO、OLE DB的接口,調整OLE DB的靈活性。甚至可以在VB中創建自己的OLE DB提供程序。
ADO的另一個功能是遠程數據訪問(RDS),能夠通過一個往返傳輸將數據從服務器移動到客戶端應用程序或Web頁中,然后在客戶端對數據進行操作,最后將更新數據返回服務器。RDS現在的版本是RDS 1.5。RDS已與ADO編程模塊合并以簡化客戶端數據的遠程調用。
有關ADO的更詳細信息,讀者可查閱MSDN中的相關文檔。
VB6.0也可通過RDO和Sybase數據庫進行連接,連接方法和VB5.0一樣,但ADO較RDO有更大的優越性。
VB6.0用ADO連接Sybase數據庫采用OLE DB For ODBC Driver
新建工程,在工程菜單中引用Microsoft ActiveX Data Object 2.0 Library
Public cnTest As New ADODB.Connection 注釋:聲明ADO連接對象,為工程級全局變量
注釋:連接子程序
Public Function connectSybase() As Boolean
On Error GoTo ErrHandle
Dim strConnect As String
注釋:通過下句與ODBC數據源進行連接,不需用戶選擇數據源
strConnect = "Provider=MSDASQL.1;Persist Security Info=False;" _
& " Extended Properties=注釋:DSN=chs;SRVR=WIND;DB=master;UID=sa;PWD=注釋:"
cnTest.Open strConnect
注釋:注意:如果你不想建立DSN,可采取無DSN連接方法如下:
注釋:將上句改為 strConnect="Provider=MSDASQL.1;DRIVER={Sybase System 11}; " _
注釋: & " Persist Security Info=False;DSN=;" _
& " SRVR=WIND;DB=master;UID=sa;PWD=password"
注釋:Persist Security是否采用集成
安全機制
connectSybase = True
Exit Function
ErrHandle:
connectSybase = False
End Function
Private Sub Form_Load()
Dim rsTest As New ADODB.Recordset
Dim strSQL As String
If connectSybase Then
strSQL = "Select * from sysusers" 注釋:strSQL可以是SQL語句(塊),存儲過程
rsTest.CursorLocation = adUseClient
rsTest.Open strSQL, cnTest 注釋:cnTest為打開的活動的連接
Else
MsgBox "打開數據庫失敗"
Exit Sub
End If
Do Until rsTest.EOF
Debug.Print rsTest.Fields(0), rsTest.Fields(1)
rsTest.MoveNext
Loop
End Sub
以上只談了和Sybase數據庫的連接及簡單的查詢,其它操作對
程序員來講和其它數據庫的編寫大致相同,讀者可自行編寫復雜的SQL語句對數據庫進行增、刪、改等操作。
原文轉自:http://www.anti-gravitydesign.com