sqlsever語句
⑴ sql server 里有循環語句嗎 沒有請看描述
如何利用connection對象連接數據源?
用一個connnection 對象,只要指定一個connection字元串,目的是用來指定你想要聯結的數據源,然後調用open方法來建立鏈接。
通過connection string提供的信息用OPEN方法可以非常輕松的建立與數據的連接。如果你決定用connection對象進行工作,那麼你可以用它的STATE屬性。如果connection對象被打開了那麼它的返回值為adstateopen,如果不是它的返回值為adstateclosed.下面的例子是利用odbc建立與SQL的連接。
Sub ConnectionExample1()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
' 用ODBC打開連接.
cnn.Open "Pubs", "sa", ""
' 檢查是否完成連接
If cnn.State = adStateOpen Then
MsgBox "Welcome to Pubs!"
Else
MsgBox "Sorry. No Pubs today."
End If
關閉connection對象
cnn.Close
End Sub
如果你只需要連接一個數據源。下面的代碼要比上面的簡單。作為選擇,你可以創建一個connection對象,在調用open方法前你可以先設置ConnectionString屬性。這種方法容許你連接一個數據源後再重新用這個對象再連接另一個數據源。
Sub ConnectionExample2()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
' 用ODBC DSN 建立連接
cnn.ConnectionString = "DSN=Pubs;UID=sa;PWD=;"
cnn.Open
' 檢查是否與數據源建立了連接.
If cnn.State = adStateOpen Then
MsgBox "Welcome to Pubs!"
Else
MsgBox "Sorry. No Pubs today."
End If
'關閉connection對象
cnn.Close
End Sub
在你對CONNECTION對象建立連接前,你可以設置它的其它屬性。例如,你可以設置連接超時。
Sub ConnectionExample3()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
' 設置CONNECTION屬性
cnn.ConnectionString = "DSN=Pubs;UID=sa;PWD=;"
cnn.ConnectionTimeout = 30
' 打開connection 對象
cnn.Open
' 檢查是否已經連接上數據源
If cnn.State = adStateOpen Then
MsgBox "Welcome to Pubs!"
Else
MsgBox "Sorry. No Pubs today."
End If
' 關閉connection對象
cnn.Close
End Sub
ConnectionString屬性的語法結構假定數據源已經被建立或利用系統管理員的身份使用ODBC.不依靠存在的odbc數據源變得流行起來。這樣就減輕了安裝的負擔。下面的例子是一個連接SQL SERVER的可選擇性的方法,僅依靠本身存在的odbc driver
. Sub ConnectionExample4()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
'利用引用ODBC DRIVER打開CONNECTION對象
cnn.ConnectionString = "driver={SQL Server};" & _
"server=rgreennt;uid=sa;pwd=;database=pubs"
cnn.Open
' Find out if the attempt to connect worked.
'檢查是否已經建立連接
If cnn.State = adStateOpen Then
MsgBox "Welcome to Pubs!"
Else
MsgBox "Sorry. No Pubs today."
End If
' 關閉CONNECTION對象
cnn.Close
End Sub
現在ODBC DRIVER 有更廣的變化,你可以用ADO和數據源對話。不久將會有更的的OLE DB提供者與數據源建立連接。The Microsoft® OLE DB Provider for ODBC是當前ADO默認的提供者。你能用不同的提供者設置CONNECTION對象的provider屬性。
Sub ConnectionExample5()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
'設置PROVIDER屬性利用OLE DB Provider for ODBC
cnn.Provider = "MSDASQL"
'用ODBC DSN打開CONNECTION對象
cnn.ConnectionString = "driver={SQL Server};" & _
"server=rgreennt;uid=sa;pwd=;database=pubs"
cnn.Open
'檢查是否連接上數據源
If cnn.State = adStateOpen Then
MsgBox "Welcome to Pubs!"
Else
MsgBox "Sorry. No Pubs today."
End If
'關閉CONNECTION對象
cnn.Close
End Sub
上面的代碼設置PROVIDER屬性不是必須因為ADO的默認提供者就是OLE DB PROVIDER FOR ODBC.這里只是認你知道當你用其它的OLE DB PROVIDERS時如何設置。
我如何用CONNECTION對象執行COMMAND?
CONNNETION的EXECUTE方法用來發送一個COMMAND(一個SQL指令或其它的文本信息)到數據源。如果在SQL指令中要求返回幾行記錄集,一個RECORDSET對象將會被自動的建立。
Sub ConnectionExample6()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cnn = New ADODB.Connection
' 引用 ODBC driver 建立連接.
cnn.ConnectionString = "driver={SQL Server};" & _
"server=rgreennt;uid=sa;pwd=;database=pubs"
cnn.Open
' 執行SQL 語句創立一個RECORDSET對象.
Set rs = cnn.Execute("Select * From authors")
' 顯示第一個 author.
MsgBox rs("au_fname") & " " & rs("au_lname")
' 斷開連接
rs.Close
End Sub
記住用EXECUTE返回的RECORDSET是只讀的,並且是僅向前游標。如果你需要用RECORDSET物件的更多函數,你首先要創建RECORDSET物件並設置想要設置的屬性然後用OPEN方法打開它來執行查詢和返回想要得到的游標類型.
在下面的例子中,COMMAND物件執行刪除指令,由於沒有數據集需要返回,你不需要額外的用RECORDSET物件.刪除了多少行數據?你可以通過RECORDSAFFECTED參數知道它.
Sub ConnectionExample7()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cnn = New ADODB.Connection
'引用ODBC DRIVER建立連接
cnn.ConnectionString = "driver={SQL Server};" & _
"server=rgreennt;uid=sa;pwd=;database=pubs"
cnn.Open
'向數據源發送刪除指令
cnn.Execute ("Delete From authors Where au_id = '011-01-0111'")
' 檢查有多少行數據被刪除
Set rs = cnn.Execute("Select @@rowcount")
' 顯示第一個欄位
MsgBox rs(0) & " rows deleted"
'關閉連接
rs.Close
End Sub
下面的例子,這個COMMAND通過指定的存儲過程的名字運行數據源的存儲過程.由於需要返回數據,所以你必需建立RECORDSET物件。
Sub ConnectionExample8()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cnn = New ADODB.Connection
' 引用ODBC DRIVER來建立連接
cnn.ConnectionString = "driver={SQL Server};" & _
"server=rgreennt;uid=sa;pwd=;database=pubs"
cnn.Open
' 建立RECORDSET對象來運行存儲過程
Set rs = cnn.Execute("Exec byroyalty 50")
' 通過循環來顯示AUTHOR的ID
Do While Not rs.EOF
MsgBox rs("au_id")
rs.MoveNext
Loop
' 斷開連接
rs.Close
End Sub