none
vb中使用带参数的SQl语句问题 RRS feed

  • 问题

  • 在VB6里的一条数据库更新语句:
    update Ass_UserPass set username='" & txtName & "',department='" & cboBm.Text & "',UsFunction='" & cboLb.Text & "',pword='" & strPassStor & "' where user_id='" & lblId & "' 
    由于 strPassStor 是经加密运算得出,所以这种写法会有错误,因为产生的密码中会有特殊字符。
    于是想用参数化查询的方式:
     Set Cmd = New ADODB.Command
      strSql = "update Ass_UserPass set username='" & txtName & "',department='" & cboBm.Text & "',UsFunction='" & cboLb.Text & "',pword=@Pword where user_id='" & lblId & "' "
      With Cmd
      .Prepared = False
      .CommandText = strSql
      .CommandType = adCmdText
      .NamedParameters = True
      .Parameters.Append .CreateParameter("@Pword", adVarChar, adParamInput, 32, strPassStor)
      Set .ActiveConnection = cnErp
      .Execute
      End With
    结果提示变量“@Pword ”未定义,试了好多次都不能解决参数化查询问题,网上也只有调用存储过程的例子。请问如何实现Sql语句中带参数的查询呢?谢谢!
    陈锦巍
    2010年12月4日 12:10

答案

  • 你好

    或者你可以幫你的 SQL STATEMENT 轉成 STORED PROCEDURE 因為好像 CommandType = adCmdText 不能接受 SQL Parameter 的 要STORED PROCEDURE才可以

     

    或者你可以POST 這個strPassStor 給我們參考看..應用可以怎樣直接方到SQL QUERY 使用

    Please correct me if my concept is wrong


    Chi
    2010年12月5日 9:41
    版主
  • 谢谢您的答复,现在找到解决方法了,就是查询语句的参数只能用“?”。
    陈锦巍
    2010年12月9日 9:26

全部回复

  • 你好

    或者你可以幫你的 SQL STATEMENT 轉成 STORED PROCEDURE 因為好像 CommandType = adCmdText 不能接受 SQL Parameter 的 要STORED PROCEDURE才可以

     

    或者你可以POST 這個strPassStor 給我們參考看..應用可以怎樣直接方到SQL QUERY 使用

    Please correct me if my concept is wrong


    Chi
    2010年12月5日 9:41
    版主
  • 谢谢您的答复,现在找到解决方法了,就是查询语句的参数只能用“?”。
    陈锦巍
    2010年12月9日 9:26
  • 谢谢您的答复,现在找到解决方法了,就是查询语句的参数只能用“?”。
    陈锦巍

    我的印象中Access会这样,Sql server不会这样。
    2010年12月9日 13:58
  • 谢谢您的答复,现在找到解决方法了,就是查询语句的参数只能用“?”。
    陈锦巍

    我的印象中Access会这样,Sql server不会这样。

    大概是使用ado的原因吧,这里说的不是ado.net
    陈锦巍
    2011年5月26日 9:48