ADODB CreateParameter方法中name参数的用途是什么?

时间:2018-04-10 18:13:22

标签: sql asp-classic adodb

所以我正在修改经典ASP中的现有查询。经典ASP对我来说相当新,特别是这个ADODB Command的东西。

正如Microsoft's Docs

所述
Name
Optional. A String value that contains the name of the Parameter object.

虽然其他东西也不是我熟悉的东西,但这些都是另一天的问题。

sql = "INSERT INTO Paintings (pieceName, artistName, description, galleryID) VALUES (?, ?, ?, ?)"  
set sqlCmd = Server.CreateObjects("ADODB.Command")
sqlCmd.Parameters.Append(sqlCmd.CreateParameter("@PieceName",adVarChar,adParamInput, 256, txtPieceName))  
sqlCmd.Parameters.Append(sqlCmd.CreateParameter("@ArtistName",adVarChar,adParamInput, 256, txtArtist))
sqlCmd.Parameters.Append(sqlCmd.CreateParameter("@Description",adVarChar,adParamInput, 5000, txtDescription))
sqlCmd.Parameters.Append(sqlCmd.CreateParameter("@Description",adInteger,adParamInput, 256, txtGalleryID))

ADODBCon.query(sql, sqlCmd)

重点是,代码来自他们的实时分支。我可以看到@Description与SQL不匹配,所以我可以认为该命令不区分大小写或者名称参数根本不与SQL相关。

其次,@Description使用两次仍然有效,有两种不同的类型。我知道它是optional,但如果它与SQL无关,并且可以使用不同类型的同名存在,那是否只是为了可读性?

对不起,如果A String value that contains the name of the Parameter object完全解释了它的目的而且我没有得到它,那么名称论证的目的是什么?

1 个答案:

答案 0 :(得分:3)

CreateParameter方法实际上正在创建一个Parameter对象,然后.Append方法将添加到ADODB.Command对象,sqlCmd在这种情况下,参数集合。由于它是一个集合,因此名称是可选的,因为可以通过项索引访问集合项。

来自Parameter Name属性的文档:

  

对于尚未附加到Parameters集合的Parameter对象,名称   属性是读/写。对于附加的Parameter对象和所有其他对象,   Name属性是只读的。 名称不一定是唯一的   集合