2011-11-21 69 views
1
sqlCmd.CommandText = "SELECT clientID, clientPassword" & _ 
        " FROM Clients" & _ 
        " WHERE (clientPassword=?)" 
Set param = sqlCmd.CreateParameter("@clientPassword", 200, 1, Len(pass), pass) 
sqlCmd.Parameters.Append param 

Set rsUsers = sqlCmd.Execute 

这个查询执行OK,但当我尝试之后几乎相同的一个...多步OLE DB操作产生错误与参数化查询

sqlCmd.CommandText = "SELECT clientID, clientUsername, clientPassword" & _ 
        " FROM Clients" & _ 
        " WHERE (clientEmail=?)" 
Set param = sqlCmd.CreateParameter("@clientEmail", 200, 1, Len(email), email) 
sqlCmd.Parameters.Append param 

Set rsUsers = sqlCmd.Execute 

我得到这个错误,

多步OLE DB操作生成错误。检查每个OLE DB状态值(如果可用)。没有工作完成。

这两列的长度都是nvarchar,255和50。

我的大部分Google搜索都表示这是一个数据类型错误,但我只是检索值,如果第二个查询自己执行,它可以正常工作。如果我运行多个查询,则只会发生该错误。

请谢谢。

感谢爱德华多,这让我通过我的查询没有错误,但我的UPDATE查询什么都不做。

sqlCmd.CommandText = "UPDATE Clients" & _ 
        " SET clientUsername=?, clientPassword=?" & _ 
        " WHERE (clientEmail=?)" 
Set param = sqlCmd.CreateParameter("@clientEmail", 200, 1, Len(email), email)  
sqlCmd.Parameters.Append param 
Set param = sqlCmd.CreateParameter("@clientUsername", 200, 1, Len(user), user) 
sqlCmd.Parameters.Append param 
Set param = sqlCmd.CreateParameter("@clientPassword", 200, 1, Len(pass), pass)  
sqlCmd.Parameters.Append param 
Set rsUsers = sqlCmd.Execute 

任何想法为什么?我一直坚持这段代码几天。

+0

是否具有相同数据类型的clientPassword和clientEmail列是d相同的长度?电子邮件变量的值是否比clientEmail列长? – GTG

+0

你重复使用相同的sqlCmd吗?如果是这样,sqlCmd.Parameters有两个参数而不是一个。使用不同的sqlCmd或使用sqlCmd.Refresh。 –

回答

2

您是否重新初始化sqlCmd变量?

我猜你缺少

Set sqlCmd = server.createobject("ADODB.Command") 

在您编辑后运行的第二个

编辑
顺序事项后,所以你需要添加PARAMS以相同的顺序,你在查询中使用它们

Set param = sqlCmd.CreateParameter("@clientUsername", 200, 1, Len(user), user) 
sqlCmd.Parameters.Append param 
Set param = sqlCmd.CreateParameter("@clientPassword", 200, 1, Len(pass), pass)  
sqlCmd.Parameters.Append param 
Set param = sqlCmd.CreateParameter("@clientEmail", 200, 1, Len(email), email)  
sqlCmd.Parameters.Append param  
Set rsUsers = sqlCmd.Execute 
+0

请参阅修订后的问题。我无法在评论中获得格式化权限。 – AEP

+0

我不相信这是正确的。你说我需要3个不同的对象,实际上参数是一个集合。无论如何试过了,它没有帮助。 – AEP

+0

添加参数后,我重新设置并再次使用它。这应该不成问题。 – AEP

相关问题