所以我正在修改经典ASP中的现有查询。经典ASP对我来说相当新,特别是这个ADODB Command的东西。
所述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
完全解释了它的目的而且我没有得到它,那么名称论证的目的是什么?
答案 0 :(得分:3)
CreateParameter
方法实际上正在创建一个Parameter对象,然后.Append
方法将添加到ADODB.Command对象,sqlCmd
在这种情况下,参数集合。由于它是一个集合,因此名称是可选的,因为可以通过项索引访问集合项。
来自Parameter Name属性的文档:
对于尚未附加到Parameters集合的Parameter对象,名称 属性是读/写。对于附加的Parameter对象和所有其他对象, Name属性是只读的。 名称不一定是唯一的 集合强>