【问题标题】:What is the purpose of the name argument in ADODB CreateParameter method?ADODB CreateParameter 方法中 name 参数的目的是什么?
【发布时间】: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


    【解决方案1】:

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

    来自Parameter Name 属性的文档:

    对于尚未附加到参数集合的参数对象,名称 属性是读/写。对于附加的 Parameter 对象和所有其他对象, Name 属性是只读的。 名称在一个 收藏

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-18
      • 2015-09-26
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      相关资源
      最近更新 更多