2016-01-21 106 views
0

Iam運行傳統的VB6應用程序。我試圖執行一個存儲過程,通過SQL-SERVER中的一堆表,抓取數據並將其放入SQL-SERVER中的表中。我是否需要聲明並設置新的記錄集?從vb6在sql-server中執行存儲過程?

dim strSQL as string 
strSQL = "Exec FillEmptyTable @blah = "& blah 

這似乎是我不需要的記錄,但這並不執行

現在,當我設置一個新的記錄,然後它

dim rs as adodb.recordset 
set rs = new adodb.recordset 
dim strSQL as string 
strSQL = "Exec FillEmptyTable @blah = "&blah 
rs.open strSQL, Connection 

這是正確的?我不知道爲什麼我只需要在SQL-SERVER上創建一個記錄集就可以了。

+0

你真的需要參數化這個,而不是執行一個字符串。在VB6中有數百個例子。 –

+1

正如你可以從你的例子看到的那樣,'rs.open strSQL,Connection'是在[sql-server]上執行查詢的行。在第一個例子中,你只需構造要執行的字符串,但字符串實際上並未發送到服務器。記錄集是必要的,因爲[vb6]實際上不知道數據是否會被返回。但是你可以用它來檢查查詢是否按預期執行。如果一切正常,則讓存儲過程返回一個「ok」,如果發生錯誤,則返回一個錯誤代碼。 – Ralph

回答

1

如果您不需要記錄,因爲SP不返回行,或者你不關心它回報你任何行可以簡單地將SQL字符串傳遞給連接對象:

Connection.Execute strSQL, 0, adCmdText 

here使用Command對象更正式的方式,可以消除在手動構建字符串中的SQL時隱含的SQL注入漏洞的潛在可能性。