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注入漏洞的潜在可能性。