【发布时间】:2018-04-10 18:13:22
【问题描述】:
所以我正在修改经典 ASP 中的现有查询。经典的 ASP 对我来说相当新,尤其是这个 ADODB 命令的东西。
正如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 不匹配,因此我可以确定该命令不区分大小写,或者 name 参数与 SQL 完全无关。
其次,@Description 被使用了两次并且仍然有效,有两种不同的类型。我知道它说optional,但如果它与SQL 无关,并且可以以不同类型的相同名称存在,是否只是为了可读性?
如果A String value that contains the name of the Parameter object 完全解释了它的目的,我只是不明白,我很抱歉,但是 name 参数的目的是什么?
【问题讨论】:
标签: sql asp-classic adodb