昨天有位久未謀面的老同學(xué),突然問(wèn)起如何在VB中調(diào)用SQL的存儲(chǔ)過(guò)程。
當(dāng)時(shí)因?yàn)槭稚蠜](méi)有資料,機(jī)器上也沒(méi)裝SQL,隨即發(fā)了早年寫的一段ASP代碼,也不知道行不行。
抱著負(fù)責(zé)任的態(tài)度,剛好又有點(diǎn)空閑,便做了個(gè)測(cè)試:
(說(shuō)來(lái)慚愧,N久沒(méi)用VB了,居然不知道怎么加入ADODB類型庫(kù)了,就填加了一個(gè)ADODC控件,汗顏~```)
Private Sub ExampleButton_Click()
Dim sqlConn As New ADODB.Connection
Dim sqlCmd As New ADODB.Command
Dim myParam As ADODB.Parameter
Dim sqlRs As ADODB.Recordset
Dim sqlCmdStr As String
sqlConn.Open "driver={SQL Server};server=127.0.0.1;database=master;uid=sa;pwd=密碼我是不會(huì)隨便告訴別人的啦:)"
sqlCmd.ActiveConnection = sqlConn
sqlCmd.CommandText = "sp_executesql"
sqlCmd.CommandType = adCmdStoredProc
sqlCmdStr = "SELECT * FROM sysmessages WHERE error>=100 AND error<=120"
Set myParam = sqlCmd.CreateParameter("@statement", adBSTR, adParamInput, Len(sqlCmdStr))
myParam.Value = sqlCmdStr
sqlCmd.Parameters.Append myParam
Set sqlRs = sqlCmd.Execute
sqlRs.MoveFirst
While Not sqlRs.EOF
MsgBox sqlRs.Fields(0).Value & ",,," & sqlRs.Fields(3).Value
sqlRs.MoveNext
Wend
End Sub
哈哈,居然成功了(不禁又自我陶醉了一番)。
雖然沒(méi)什么技術(shù)含量,不過(guò)還是再次申明一下:
其實(shí)調(diào)用存儲(chǔ)過(guò)程最重要的就是參數(shù)的正確性,比如參數(shù)名稱,參數(shù)類型啊等等。
幸好這些都是有資料可以查的,可以查SQL手冊(cè),或者如果有耐心一點(diǎn),也可以通過(guò)不斷的嘗試得出正確的答案(哈哈,廢話)。