将记录集值添加到存储过程参数 - 经典 ASP
Adding record set values to stored procedure parameters - Classic ASP
我正在尝试将每一行添加到我的存储过程参数中。我的记录集有 6 列,我正在使用记录集检索这些列的值并将它们添加到存储过程。我卡在下面,无法检索我的记录集的列值。
你认为我在下面做的是对的还是有任何其他方法可以从记录集中检索列值
If not rs.EOF and rs.BOF Then
For Each col in rs.Fields
rsAdd(Replace(col.Name,"_","")) = col.Value
cmd.Parameters("@id") = col.Name(Replace(col.Name,"_","")).value
Next
End If
更新:这是我在 Josh 建议我将所有值硬编码为参数后所做的。
这不是在执行存储过程。但我知道我的存储过程可以正常工作,因为我在 SSMS 中使用示例数据执行了它。
记录集有数据,所以我猜代码中有问题。
Set rs = GetRecordSet("C:\upload\new\" & TheNewFileName2)
'Response.Write "No Errors"
Set cn = Server.CreateObject("ADODB.Connection")
cn.ConnectionString="DSN=ABCD"
cn.Open
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = cn
cmd.CommandType = 4
cmd.CommandText = "[dbo].[uspSearchData]"
While not rs.EOF and rs.BOF
cmd.Parameters.Append cmd.CreateParameter("@id",3,1,rs("Merchant_ID"))
cmd.Parameters.Append cmd.CreateParameter("@name",200,1,255,rs("Name"))
cmd.Parameters.Append cmd.CreateParameter("@address",200,1,255,rs("Address"))
cmd.Parameters.Append cmd.CreateParameter("@city",200,1,255,rs("City"))
cmd.Parameters.Append cmd.CreateParameter("@state",200,1,255,rs("State"))
cmd.Parameters.Append cmd.CreateParameter("@zip",200,1,255,rs("Zip"))
cmd.Parameters.Append cmd.CreateParameter("@country",200,1,255,rs("Country"))
cmd.Parameters.Append cmd.CreateParameter("@phone",200,1,255,rs("Phone"))
cmd.Parameters.Append cmd.CreateParameter("@emailid",200,1,255,rs("Web_Address"))
cmd.Parameters.Append cmd.CreateParameter("@awardlevel",200,1,255,rs("Award_Level"))
cmd.Parameters.Append cmd.CreateParameter("@awardvalue",200,1,255,rs("Award_Value"))
cmd.Parameters.Append cmd.CreateParameter("@awarddays",200,1,255,rs("Award_Days"))
cmd.Parameters.Append cmd.CreateParameter("@bestlogo",200,1,255,rs("BestLogo"))
cmd.Parameters.Append cmd.CreateParameter("@twitter",200,1,255,rs("Twitter"))
cmd.Parameters.Append cmd.CreateParameter("@facebook",200,1,255,rs("Facebook"))
cmd.Parameters.Append cmd.CreateParameter("@electronicprogram",200,1,255,rs("Electronic_Program"))
cmd.Execute
rs.MoveNext
Wend
rs.Close
Set cmd = Nothing
Set rs = Nothing
cn.Close
Set cn = Nothing
Do you think What I am doing below is right or is there any other way
to retrieve a column value from a record-set
如果您只有 6 列,最好只对每一行进行硬编码,而不是使用循环遍历每一列。循环遍历每一列只有在它们都具有相同的数据类型和大小时才有效
我明白了。我正在检查文件结尾,如果不是 EOF,则进入循环。但是也有 BOF,我没有检查 "Not BOF",这就是原因,值没有插入到数据库中。我的最终工作代码如下。
Set rs = GetRecordSet("C:\upload\new\" & TheNewFileName2)
'Response.Write "No Errors"
Set cn = Server.CreateObject("ADODB.Connection")
cn.ConnectionString="DSN=ABCD"
cn.Open
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = cn
cmd.CommandType = 4
cmd.CommandText = "[dbo].[uspSearchData]"
While not rs.EOF and not rs.BOF
cmd.Parameters.Append cmd.CreateParameter("@id",3,1,rs("Merchant_ID"))
cmd.Parameters.Append cmd.CreateParameter("@name",200,1,255,rs("Name"))
cmd.Parameters.Append cmd.CreateParameter("@address",200,1,255,rs("Address"))
cmd.Parameters.Append cmd.CreateParameter("@city",200,1,255,rs("City"))
.
.
.
.
cmd.Execute
rs.MoveNext
Wend
rs.Close
Set cmd = Nothing
Set rs = Nothing
cn.Close
Set cn = Nothing
我正在尝试将每一行添加到我的存储过程参数中。我的记录集有 6 列,我正在使用记录集检索这些列的值并将它们添加到存储过程。我卡在下面,无法检索我的记录集的列值。
你认为我在下面做的是对的还是有任何其他方法可以从记录集中检索列值
If not rs.EOF and rs.BOF Then
For Each col in rs.Fields
rsAdd(Replace(col.Name,"_","")) = col.Value
cmd.Parameters("@id") = col.Name(Replace(col.Name,"_","")).value
Next
End If
更新:这是我在 Josh 建议我将所有值硬编码为参数后所做的。
这不是在执行存储过程。但我知道我的存储过程可以正常工作,因为我在 SSMS 中使用示例数据执行了它。
记录集有数据,所以我猜代码中有问题。
Set rs = GetRecordSet("C:\upload\new\" & TheNewFileName2)
'Response.Write "No Errors"
Set cn = Server.CreateObject("ADODB.Connection")
cn.ConnectionString="DSN=ABCD"
cn.Open
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = cn
cmd.CommandType = 4
cmd.CommandText = "[dbo].[uspSearchData]"
While not rs.EOF and rs.BOF
cmd.Parameters.Append cmd.CreateParameter("@id",3,1,rs("Merchant_ID"))
cmd.Parameters.Append cmd.CreateParameter("@name",200,1,255,rs("Name"))
cmd.Parameters.Append cmd.CreateParameter("@address",200,1,255,rs("Address"))
cmd.Parameters.Append cmd.CreateParameter("@city",200,1,255,rs("City"))
cmd.Parameters.Append cmd.CreateParameter("@state",200,1,255,rs("State"))
cmd.Parameters.Append cmd.CreateParameter("@zip",200,1,255,rs("Zip"))
cmd.Parameters.Append cmd.CreateParameter("@country",200,1,255,rs("Country"))
cmd.Parameters.Append cmd.CreateParameter("@phone",200,1,255,rs("Phone"))
cmd.Parameters.Append cmd.CreateParameter("@emailid",200,1,255,rs("Web_Address"))
cmd.Parameters.Append cmd.CreateParameter("@awardlevel",200,1,255,rs("Award_Level"))
cmd.Parameters.Append cmd.CreateParameter("@awardvalue",200,1,255,rs("Award_Value"))
cmd.Parameters.Append cmd.CreateParameter("@awarddays",200,1,255,rs("Award_Days"))
cmd.Parameters.Append cmd.CreateParameter("@bestlogo",200,1,255,rs("BestLogo"))
cmd.Parameters.Append cmd.CreateParameter("@twitter",200,1,255,rs("Twitter"))
cmd.Parameters.Append cmd.CreateParameter("@facebook",200,1,255,rs("Facebook"))
cmd.Parameters.Append cmd.CreateParameter("@electronicprogram",200,1,255,rs("Electronic_Program"))
cmd.Execute
rs.MoveNext
Wend
rs.Close
Set cmd = Nothing
Set rs = Nothing
cn.Close
Set cn = Nothing
Do you think What I am doing below is right or is there any other way to retrieve a column value from a record-set
如果您只有 6 列,最好只对每一行进行硬编码,而不是使用循环遍历每一列。循环遍历每一列只有在它们都具有相同的数据类型和大小时才有效
我明白了。我正在检查文件结尾,如果不是 EOF,则进入循环。但是也有 BOF,我没有检查 "Not BOF",这就是原因,值没有插入到数据库中。我的最终工作代码如下。
Set rs = GetRecordSet("C:\upload\new\" & TheNewFileName2)
'Response.Write "No Errors"
Set cn = Server.CreateObject("ADODB.Connection")
cn.ConnectionString="DSN=ABCD"
cn.Open
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = cn
cmd.CommandType = 4
cmd.CommandText = "[dbo].[uspSearchData]"
While not rs.EOF and not rs.BOF
cmd.Parameters.Append cmd.CreateParameter("@id",3,1,rs("Merchant_ID"))
cmd.Parameters.Append cmd.CreateParameter("@name",200,1,255,rs("Name"))
cmd.Parameters.Append cmd.CreateParameter("@address",200,1,255,rs("Address"))
cmd.Parameters.Append cmd.CreateParameter("@city",200,1,255,rs("City"))
.
.
.
.
cmd.Execute
rs.MoveNext
Wend
rs.Close
Set cmd = Nothing
Set rs = Nothing
cn.Close
Set cn = Nothing