A. 網路怎麼連接資料庫
VB訪問SQL Server資料庫技術全揭密(1)
本文討論了Visual Basic應用程序訪問SQL Server資料庫的幾種常用的方法,分別說明了每種方法的內部機理並給出了每種方法的一個簡單的實例,最後比較了每種方法性能和優缺點。
一、引言
SQL Server是微軟推出的中小型網路資料庫系統,是目前最常用的資料庫系統之一。隨著SQL Server網路資料庫應用程序日益增多,這種Web資料庫應用系統的正常運行一般依賴於已存在的用戶資料庫。創建維護資料庫的工作可用SQL Server提供的SQL Enterprise Manager工具來進行,如能提供一種定製的資料庫管理工具,通過管理應用程序來管理資料庫及其設備,對用戶來說無疑是最理想的。
Visual Basic作為一種面向對象的可視化編程工具,具有簡單易學,靈活方便和易於擴充的特點。而且Microsoft為其提供了與SQL Server通信的API函數集及工具集,因此它越來越多地用作大型公司數據和客戶機—伺服器應用程序的前端,與後端的Microsoft SQL Server相結合,VB能夠提供一個高性能的客戶機—伺服器方案。
二、VB訪問SQL Server數據的常用方法
使用Visual Basic作為前端開發語言,與SQL Server介面有幾種常用的方法,即:
①數據訪問對象/Jet
②為ODBC API編程
③使用SQL Server的Visual Basic庫(VBSQL)為DB庫的API編程
④RDO 遠程數據對象(RemoteData Objects)
⑤ADO 數據對象(Active Data Objects)
1、數據訪問對象/Jet
VB支持Data Access Objects(DAOs)的子集。DAO的方法雖然不是性能最好的管理客戶機—伺服器之間的對話方式,但它的確有許多優點。DAO/Jet是為了實現從VB訪問Access資料庫而開發的程序介面對象。使用DAOs訪問SQL Server的過程如下:應用程序准備好語句並送至Jet,Jet引擎(MASJT200.DLL)優化查詢,載入驅動程序管理器並與之通訊,驅動程序管理器(ODBC.DLL)通過調用驅動器(SQLSRVR.DLL)的函數,實現連接到數據源,翻譯並向SQL Server提交SQL語句且返回結果。下面是一個用DAOs訪問SQL Server的VB實例。
注釋:Form Declarations
Dim mydb As Database
Dim mydynaset As Dynaset オ
Private Sub Form_Load()
Set mydb = OpenDatabase("", False, False, "ODBC; DSN=Myserver; WSID=LCL; DATABASE = sales")
Set mydynaset = mydb CreateDynaset("Select*from Customers") オ
End Sub ァ
上述例子是以非獨占、非只讀方式打開sales資料庫,並檢索Customers表中的所有欄位。OpenDatabase函數的最後一個參數是ODBC連接字元串參數,它指明了Microsoft Access連接到SQL Server所需要知道的一些內容。其中「DSN」為數據源名,「WSID」為工作站名,「DATABASE」為所要訪問的資料庫名。
2、利用ODBC API編程
ODBC(Open Database Connectivity)的思想是訪問異種資料庫的一種可移植的方式。與數據資源對話的公用函數組裝在一個稱為驅動程序管理器(ODBC.DLL)的動態連接中。應用程序調用驅動程序管理器中的函數,而驅動程序管理器反過來通過驅動器(SQLSRVR.DLL)把它們送到伺服器中。
下面的代碼使用上面一些函數先登錄到一個伺服器資料庫,並為隨後的工作設置了語句句柄。
Global giHEnv As Long
Global giHDB As Long
Global giHStmt As Long
Dim myResult As integer
Dim myConnection As Srting
Dim myBuff As String*256
Dim myBufflen As Integer
If SQLAllocEnv(giHEnv)<>SQL_SUCCESS Then
MsgBox"Allocation couldn注釋:t happen!"
End If
If SQLAllocConnect(giHEnv,giHDB)<>SQL_SUCCESS Then
MsgBox "SQL Server couldn注釋:t connect!"
End If
myConnection="DSN=myServer;UID=LCL;PWD=;APP=ODBCTest;WSID=LCL;DATABASE=sales"
myResult=SQLDriverConnect(giHDB,Test,form1.hWnd,myConnection.len(myConnection),myBuff,256,myBufflen,SQL_DRIVER_COMPLETE_REQUIED)
myResult=SQLAllocStmt(giHDS,giHStmt)
myResult=SQLFreeStmt(giHStmt,SQL_COLSE)
rsSQL="Select * from Customers Where City = "Hunan""
myResult = SQLExecDirect(giHStmt,rsSQL,Len(rsSQL))
3、使用VBSQL對DB庫API編程
DB庫是SQL Server的本地API,SQL Server的Visual Basic庫(VBSQL)為Visual Basic程序員提供API。從一定意義上說,VBSQL是連接Visual Basic程序到SQL Server的性能最好最直接的方式。VBSQL包含以下三個文件:
VBSQL.VBX: 包含庫函數,具有訪問重要的消息和處理錯誤的能力
VBSQL.BI:包括所有的常量和變數說明
VBSQL.HLP:Windows幫助文件,使用VBSQL的指南
使用VBSQL時,必須將VBSQL.BI加入到Visual Basic工程文件中,並確保VB程序運行時有VBSQL.VBX文件。
一般的DB庫API編程的過程是這樣的:先通過調用SqlInit對DB庫進行初始化,再調用SqlConnection打開一個連接,然後就可做一些工作。下面的代碼是一個初始化DB庫並登錄到伺服器的通用常式
B. 怎麼實現網頁和資料庫(SQL)的連接
sql
server
2000無論是個人版、企業版還是標准版,只要細版本在8.00.1760以下,均不提供遠程資料庫連接,即使伺服器端工具和客戶端工具的設置均有tcp/ip設置和資料庫連接屬性也設置了rpc遠程連接,仍然不能實現遠程連接。該怎麼解決呢?
解決方案如下:
首先,需要打sp4補丁,該補丁包含了以前sp1、2、3的補丁,安裝此補丁後一般要重新啟動計算機,再進行遠程連接就可以了,如再企業管理器可遠程注冊伺服器、查詢分析可連接遠程伺服器、odbc可連接遠程伺服器。
要點:
1.確認伺服器端sql服務埠號是否為:1433
2.如果不是1433,配置客戶端
3.建立伺服器端登錄帳號,確保角色及管理資料庫
一、查看伺服器端情況
1.
看ping
伺服器ip能否ping通。
這個實際上是看和遠程sql
server
伺服器的物理連接是否存在。如果不行,請檢查網路,查看配置,當然得確保遠程sql
server
伺服器的ip拼寫正確。
2.
在dos或命令行下輸入telnet
伺服器ip
埠,看能否連通。
如telnet
202.114.100.100
1433
通常埠值是1433,因為1433是sql
server
的對於tcp/ip的默認偵聽埠。如果有問題,通常這一步會出問題。通常的提示是「……無法打開連接,連接失敗"。
如果這一步有問題,應該檢查以下選項。
1)
檢查遠程伺服器是否啟動了sql
server
服務。如果沒有,則啟動。
2)
檢查sql
server伺服器端有沒啟用tcp/ip協議,因為遠程連接(通過網際網路)需要靠這個協議。檢查方法是,在伺服器上打開
開始菜單->程序->microsoft
sql
server->伺服器網路實用工具,看啟用的協議里是否有tcp/ip協議,如果沒有,則啟用它。
3)
檢查伺服器的tcp/ip埠是否配置為1433埠。仍然在伺服器網路實用工具里查看啟用協議裡面的tcp/ip的屬性,確保默認埠為1433,並且隱藏伺服器復選框沒有勾上。
事實上,如果默認埠被修改,也是可以的,但是在客戶端做telnet測試時,寫伺服器埠號時必須與伺服器配置的埠號保持一致。如果隱藏sql
server伺服器復選框被勾選,則意味著客戶端無法通過枚舉伺服器來看到這台伺服器,起到了保護的作用,但不影響連接,但是tcp/ip協議的默認埠將被隱式修改為2433,在客戶端連接時必須作相應的改變(具體方式見
二:設置客戶端網路實用工具)。
4)
如果伺服器端操作系統打過sp2補丁,則要對windows防火牆作一定的配置,要對它開放1433埠,通常在測試時可以直接關掉windows防火牆(其他的防火牆也關掉最好)。(4、5步我沒有做就成功了)
5)
檢查伺服器是否在1433埠偵聽。如果sql
server伺服器沒有在tcp連接的1433埠偵聽,則是連接不上的。檢查方法是在伺服器的dos或命令行下面輸入
netstat
-a
-n
或者是netstat
-an,在結果列表裡看是否有類似
tcp
127.0.0.1
1433
listening
的項。如果沒有,則通常需要給sql
server
2000打上至少sp3的補丁。其實在伺服器端啟動查詢分析器,輸入select
@@version
執行後可以看到版本號,版本號在8.0.2039以下的都需要打補丁。
如果以上都沒問題,這時你再做telnet
伺服器ip
1433
測試,將會看到屏幕一閃之後游標在左上角不停閃動。恭喜你,你馬上可以開始在企業管理器或查詢分析器連接了。
C. 同一個區域網內不在同一個網段怎麼連接資料庫
將無線網的WAN埠設置為192.168.101.X,連接到192.168.101.X的地址段的交換機上即可。
D. 網路怎麼連接資料庫
最簡單的訪問sql連接,假定伺服器地址:192.168.0.1,資料庫名:tempdb
先引用ado
dim
db
as
new
adodb.connection
dim
dbs
as
new
adodb.recordset
db.open
"provider=sqloledb.1
;persist
security
info=false;user
id=sa;initial
catalog=tempdb;data
source=192.168.0.1"
set
dbs
=
db.execute("select
*
from
表")