❶ 求vb6.0與sql資料庫連接的教程或資料,你行的話也可以直接幫幫我QQ313505846
二、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_REQU IE D)
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庫並登錄到伺服器的通用常式。
Private Sub InitializeApplication()
DBLIB_VERSION=SqlInit()
If DBLIB_VERSION=""Then
MsgBox"Could not initialize DBLIB!Exit application.", MB_ICONEXCLAMATION
End If
End Sub
Private Function LoginToServer() As integer
loginToServer=SUCCEED
Status%=SqlSetloginTime%(loginTimeOut)
If GISqlConn<>0 Then
SqlClose(giSqlConn) 注釋:關閉已打開的連接
giSqlConn=SqlOpenConnection(gsServerName, gsLoginID, gsPassword, ProgramName, ProgramName)
If giSqlConn<>0 Then
liresuit=SqlUse(giSqlConn,"Sales")
Else
LogintoServer=FAIL
End If
End Function
4、RDO 遠程數據對象(RemoteData Objects)
要討論RDO,就必然要談到DAO。RDO是從DAO派生出來的,但兩者很大的不同在於其資料庫模式。DAO是針對[記錄(Records)]和[欄位( Fields)],而RDO是作為[行(Rows)]和[列(Columns)]來處理。也就是說DAO 是ISAM模式,RDO是關系模式。此外DAO是訪問Access的Jet引擎(Jet是ISAM)的介面,而RDO則是訪問ODBC的介面。
可見,RDO是綜合了DAO/Jet、VBSQL/DBLib以及ODBC的優點的對象(Object)。需要強調的是,RDO是包裹著ODBC API的一層薄薄的外殼, 被設計成在後台(伺服器端)有資料庫存在的前提下運行,同時也是針對SQL Server和Oracle而特別設計的。
RDO的優勢在於它完全被集成在VB之中。此外,直接訪問SQL Server存儲過程、完全支持T-SQL、T-SQL調試集成在開發環境中、Visual Database Tools的集成化等,也是RDO的長處。
在RDO的對象和集合中,有很多對資料庫的狀態和設定進行操作的屬性(Property),以及對資料庫進行操作的方法(Method)。利用這些,從RDO2.0起就可以開發事件驅動的資料庫應用程序。
RDO對象與VB中其他對象的概念相同。與VB用的ActiveX控制項(以往稱為Custom Control或OCX、VBX)相似的是,RDO也帶有屬性和方法;但同Spread、InputMan等普遍應用的ActiveX控制項不同的是,RDO沒有自己的用戶界面,因而可以和VB標準的Timer控制項歸為同一類。當然也可以將RDO看作調用ODBC API函數,進而對後台資料庫操作加以控制的對象。在RDO的屬性和方法中,包含了對單個的ODBC API函數以及一連串API函數的調用。
①rdoEngine對象
最初調用RDO對象以及RDC(遠程數據控制項)時,自動生成rdoEngine對象的附帶事件(incident)。rdoEngine用於對RDO全局屬性的參數、選項進行設置,是在RDO的階層結構內處於最上層的對象,包含了所有的其他對象。
rdoEngine對象與DAO/Jet不同,雖然被多個應用程序共享,但體現rdoEngine對象的設定值的屬性卻並不共用,而是在各自的應用程序的程序界面中對其分別加以設定。這些設定值對其他使用RDO以及RDC的應用程序沒有任何影響。rdoEngine不是集合的要素,而是重新定義的對象,rdoEngine對象不能被追加作成對象屬性的初值。
②rdoEnvironment對象
RDO對象在自動創建rdoEngine對象時,將rdoEnviroment對象的初始值生成並保存為rdoEnviroments(0)。一般情況下,應用程序中不必追加rdoEnvironment對象,大多隻需對已有的rdoEnviroments(0)進行操作就可以了。只有在支持一個以上事務(Transaction),需要將用戶名和口令信息分別處理的情況下,利用rdoCreateEnvironment方法將特定的用戶名和口令值做成新的rdoEnvironment對象。在這個方法中可以指定固有名、用戶名和口令,如果所指定的值與rdoEnvironments集合的已經存在的成員名稱相同,會產生錯誤。新建的rdoEnvironment對象自動追加在rdoEnvironments集合的最後。調rdoCreateEnvironment方法時,其name參數可以是長度為0的文字列,這時新的rdoEnvironment對象將不會被追加在rdoEnvironments集合之中。
③rdoConnection對象
rdoConnection對象用於同SQL Server的連接管理。
下面是與SQL Server連接的例子。
用OpenConnection方法的一個實例。
設定的DSN為MyDSN:
Dim Cn As rdoConnection
Dim En As rdoEnvironment
Dim Conn As String
Conn = "DSN = MyDSN; UID = Jacob;" & "PWD = 123456; DATA BASE = MyDb;"
Set Cn= En.OpenConnection("", rdDrivERPrompt, False, Co nn)
Set Cn= En.OpenConnection(Prompt:= rdDriverPrompt, Rea dOnly:= False,Connect:= Cnn)
用EstablishConnection方法的一個實例。
這里以獨立的rdoConnection對象為例說明與SQL Server的連接。
Public WithEvents Eng As rdoEngine
Public WithEvents Cn As rdoConnection
Private Sub Form_Load()
Set Eng = New rdoEngine
Set Cn = New rdoConnection
With Cn
.Connect = "UID = ; PWD = ;" & "DATABASE = pubs; DSN = biblio"
.LoginTimeout = 5
.EstablishConnection rdoDriverNoPromt, True, rdAsyncEna ble
End With
End Sub
在這個例子中,Form_Load函數對rdoEngine和rdoConnection對象進行初始化。這里有一點需要注意,rdoConnection對象是處於獨立的狀態之下,即使是處於未連接狀態也可以設置屬性的值。接下來是rdoConnect對象的事件處理程序。從RDO 2.0起可以實現非同步方式(rdAsyn cEnable),EstablishConnection就設定為該值。在非同步狀態下,不必等待與資料庫的連接,程序可以迅速從Form_Load 函數中退出。 然後是BeforeConnect事件,該處理在與資料庫的連接開始以前被激發,此時不能進行有關終止連接的操作:
Private Sub Cn_BeforeConnect(ConnetString As String, Pro mpt As Variant)
MsgBox "正在連接" & ConnectString, vbOKOnly, "連接前"
End Sub
連接完成之後的事件處理:
Private Sub Cn_Connect(ByVal ErrorOccurred As Boolean)
Dim M As String
If ErrorOccurred Then
For Each er In rdoErrors
M = M & er & vbCrLf & M
Next
MsgBox "連接失敗" & vbCrLf & M
Else
MsgBox "連接成功"
注釋:這是確認連接狀態的測試代碼
Cn.Excute "use pubs"
End Sub
RDO連接處理結束後,在該事件中確認連接成功與否。連接成功的情況下ErrorOccurred返回False,失敗時為True,由此可以對rdoErrors集合進行檢測:
Private Sub Eng_InfoMessage()
For Each er In rdoErrors
Debug.Print er
Next
RdoErrors.Clear
End Sub
不能與SQL Server連接的原因多種多樣,有可能是由於對資料庫的訪問許可權、網路連接問題、資料庫表的信息錯誤、SQL Server同時連接的許可數、資源不足等等,具體情況需要與網路管理員商量。 斷開連接的操作非常簡單,但又很重要,因為RDO不提供自動斷開的功能。
Cn.Close
Set Cn = Nothing 注釋:釋放對象所佔的內存資源
En.Close
Set En = Nothing 注釋:釋放對象所佔的內存資源
VB是對象語言,Form、ActiveX控制項也都是對象。使用對象後必須養成將對象設為Nothing把它從內存中釋放的編程習慣。這樣可以預防很多不可預測錯誤,往往程序中發生原因不明的錯誤時,其原因就在於此。
❷ 如何用VB實現連接SQL資料庫
一是:Public Function ConnectString() _
As String
ConnectString = "Provider=SQLOLEDB;User ID=用戶;Password=密碼;" & "Data Source=" + IP地址 + ";" & "Initial Catalog=資料庫名" _
End Function
二是:
Public Function ExecuteSQL(ByVal SQL _
As String, MsgString As String) _
As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
On Error GoTo ExecuteSQL_Error
sTokens = Split(SQL)
Set cnn = New ADODB.Connection
cnn.Open ConnectString
If InStr("INSERT,DELETE,UPDATE", _
UCase$(sTokens(0))) Then
cnn.Execute SQL
MsgString = sTokens(0) & _
" query successful"
Else
Set rst = New ADODB.Recordset
rst.Open Trim$(SQL), cnn, _
adOpenKeyset, _
adLockOptimistic
Set ExecuteSQL = rst
MsgString = "查詢到" & rst.RecordCount & _
" 條記錄 "
End If
ExecuteSQL_Exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
ExecuteSQL_Error:
MsgString = "查詢錯誤: " & _
Err.Description
Resume ExecuteSQL_Exit
End Function
以上復制到模塊「Mole1」中
三是:聲明:
Dim ADO1 As Recordset
Option Explicit
Dim MsgText As String
Dim TXTSQL As String
四是:連接
TXTSQL = "select * from 表名"
Set ADO1 = ExecuteSQL(TXTSQL, MsgText)
ADO1.Requery
五是顯示欄位
Set Text1.DataSource = ADO1
Text1.DataField = "欄位"
Set MSHFlexGrid1.DataSource = ADO1
❸ VB如何連接SQL SERVER
打開「控制面板」→「管理工具」→「數據源 (ODBC)」後,出現窗體。 單擊「系統DSN」選項卡後,點擊「添加」按鈕,出現窗體。 選擇其中的「SQL Server」後,單擊「完成」,出現窗體。 單擊「下一步」,。選擇「SQL Server驗證」,一般ID為「sa」,密碼為空(實際要根據具體情況輸入)。 單擊「下一步」。更改默認資料庫為所建立的資料庫。 單擊「下一步」後完成設置。 (2)VB中使用ADO資料庫控制項,實現與資料庫的連接 使用ADO資料庫控制項需要添加組件,控制項工具箱中就出現需要的控制項。 將控制項放在需要的窗體中,。 滑鼠右鍵調出ADODC屬性,進行設置。在未建立數據源的情況下,也可進行「新建」或者使用第三個選擇「使用連接字元串」。 數據源設立完畢,就需要設立身份驗證和記錄源。 以上設置也可在ADODC1控制項的屬性中進行設置(3)代碼實現Public conn As ADODB.ConnectionPublic rs As ADODB.RecordsetPublic addFlag As Boolean '聲明部分Public Function OpenCn(ByVal Cip As String, ByVal users As String, ByVal pw As String) As Boolean '連接模塊 填寫資料庫等信息Dim mag As StringOn Error GoTo strerrmagSet conn = New ADODB.Connectionconn.ConnectionTimeout = 25conn.Provider = "sqloledb"conn.Properties("data source").Value = Cip '伺服器的名字conn.Properties("initial catalog").Value = "pubs" '庫名'conn.Properties("integrated security").Value = "SSPI" '登陸類型conn.Properties("user id").Value = users 'SQL庫名conn.Properties("password").Value = pw '密碼'sql = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=;Initial Catalog=pubs;Data Source=127.0.0.1" '如果不用這個模塊也行可以,這一句便是常用的引擎。'conn.ConnectionString = sql conn.OpenOpenCn = TrueIf conn.State = 1 Then addFlag = TrueExit Functionstrerrmag: mag = "Data can't connect" Call MsgBox(mag, vbOKOnly, "Error:Data connect") addFlag = False Exit Function '連接錯誤消息End Function'關閉資料庫,釋放連接Public Sub cloCn()On Error Resume NextIf conn.State <> adStateClosed Then conn.CloseSet conn = NothingEnd SubPublic Function openRs(ByVal strsql As String) As Boolean '連接資料庫記錄集Dim mag As StringDim rpy As BooleanOn Error GoTo strerrmag Set rs = New ADODB.Recordset If addFlag = False Then rpy = True With rs .ActiveConnection = conn .CursorLocation = adUseClient .CursorType = adOpenKeyset .LockType = adLockOptimistic .Open strsql End With addFlag = True openRs = True 'End '將記錄集給rs Exit Functionstrerrmag: mag = "data not connect" Call MsgBox(mag, vbOKOnly, "error:connect") openRs = False End 'Exit Function '連接錯誤消息End FunctionPublic Sub cloRs()On Error Resume NextIf rs.State <> adStateClosed Then rs.CloneSet rs = Nothing '釋放記錄集End Sub
❹ 如何用vb語句連接SQL資料庫
可以參考下邊自己稍作修改即可:
Sub Main()
On Error GoTo On_error
'frmWelcome.Show
Set con = New ADODB.Connection
con.ConnectionString = ("Provider=SQLOLEDB;User ID=sa;PWD=;Initial Catalog=human;Data Source=.")
con.Open
con.CommandTimeout = 20
Load frmLogin
frmLogin.Show vbModal
Exit Sub
On_error:
If Err.Number = -2147467259 Or Err.Number = -2147217900 Then
Unload frmWelcome
MsgBox "檢查到 SQL Server 未安裝或軟體所需資料庫未安裝..." & vbCrLf & "正在進一步檢查 SQL Server 的安裝情況,若已啟動則開始安裝資料庫... ", vbInformation + vbOKOnly, "系統提示"
Shell (App.Path & "\Installdb.exe")
End
Else
MsgBox Err.Number & Err.Description, vbInformation + vbOKOnly, "系統提示"
End
End If
End Sub