在 .asp 表单上使用 POST 将数据类型 varchar 转换为数字时出错
Error converting data type varchar to numeric using POST on a .asp form
我有以下代码在经典 .asp 网页上使用 POST 处理表单:
<%
update_LotNo = Replace(Request.Form, "&lotno=", ",")
update_LotNo = Replace(strIDs, "lotno=", "")
update_Qty = Replace(Request.Form, "&qty=", ",")
update_Qty = Replace(strIDs, "qty=", "")
update_Building = Replace(Request.Form, "&bldng=", ",")
update_Building = Replace(strIDs, "bldng=", "")
set DoModify = Server.CreateObject("ADODB.Command")
DoModify.ActiveConnection = MM_StockAccDB_STRING
DoModify.CommandText = "UPDATE tbl_stock_at_locations SET lotno_sal = '" & update_LotNo & "%', building_sal = '" & update_Building & "%', qty_sal = '" & update_Qty & "%' WHERE Lotno_SAL LIKE '" & update_LotNo & "%'"
'DoDelete.CommandType = 1
'DoDelete.CommandTimeout = 0
'DoDelete.Prepared = true
DoModify.Execute()
Response.Redirect("coe_in2.asp?8812901")
%>
这是我收到的错误消息:
用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序错误“80040e07”
[Microsoft][ODBC SQL 服务器驱动程序][SQL 服务器] 将数据类型 varchar 转换为数字时出错。
显然我希望最终结果是使用表单字符串更新记录。
我是 SQL 的新手,如果这是一个非常简单的问题,我深表歉意...
查看更新查询的第一部分
"UPDATE tbl_stock_at_locations SET lotno_sal = '" & update_LotNo & "%',
我很确定 % 符号不应该在那里,% 是您用来查找行的通配符,您不想实际将它写入该字段。我也会丢失单引号,VBScript 有一个将字符串转换为数字的函数,cint()
.
将所有这些放在一起,并假设 qty_sal 也是一个数字字段,将查询更改为
"UPDATE tbl_stock_at_locations SET lotno_sal = " & cint(update_LotNo) & ", building_sal = '" & update_Building & "', qty_sal = " & cint(update_Qty) & " WHERE Lotno_SAL LIKE '" & update_LotNo & "%'"
我也建议你看看一些涉及数据库和经典的教程asp而不是使用Dreamweaver 来生成你的代码,DW 代码很糟糕。如果这是面向客户的,那么您应该研究参数化查询,否则您可能容易受到 SQL 注入攻击
我有以下代码在经典 .asp 网页上使用 POST 处理表单:
<%
update_LotNo = Replace(Request.Form, "&lotno=", ",")
update_LotNo = Replace(strIDs, "lotno=", "")
update_Qty = Replace(Request.Form, "&qty=", ",")
update_Qty = Replace(strIDs, "qty=", "")
update_Building = Replace(Request.Form, "&bldng=", ",")
update_Building = Replace(strIDs, "bldng=", "")
set DoModify = Server.CreateObject("ADODB.Command")
DoModify.ActiveConnection = MM_StockAccDB_STRING
DoModify.CommandText = "UPDATE tbl_stock_at_locations SET lotno_sal = '" & update_LotNo & "%', building_sal = '" & update_Building & "%', qty_sal = '" & update_Qty & "%' WHERE Lotno_SAL LIKE '" & update_LotNo & "%'"
'DoDelete.CommandType = 1
'DoDelete.CommandTimeout = 0
'DoDelete.Prepared = true
DoModify.Execute()
Response.Redirect("coe_in2.asp?8812901")
%>
这是我收到的错误消息:
用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序错误“80040e07”
[Microsoft][ODBC SQL 服务器驱动程序][SQL 服务器] 将数据类型 varchar 转换为数字时出错。
显然我希望最终结果是使用表单字符串更新记录。
我是 SQL 的新手,如果这是一个非常简单的问题,我深表歉意...
查看更新查询的第一部分
"UPDATE tbl_stock_at_locations SET lotno_sal = '" & update_LotNo & "%',
我很确定 % 符号不应该在那里,% 是您用来查找行的通配符,您不想实际将它写入该字段。我也会丢失单引号,VBScript 有一个将字符串转换为数字的函数,cint()
.
将所有这些放在一起,并假设 qty_sal 也是一个数字字段,将查询更改为
"UPDATE tbl_stock_at_locations SET lotno_sal = " & cint(update_LotNo) & ", building_sal = '" & update_Building & "', qty_sal = " & cint(update_Qty) & " WHERE Lotno_SAL LIKE '" & update_LotNo & "%'"
我也建议你看看一些涉及数据库和经典的教程asp而不是使用Dreamweaver 来生成你的代码,DW 代码很糟糕。如果这是面向客户的,那么您应该研究参数化查询,否则您可能容易受到 SQL 注入攻击