繁体   English   中英

将varchar值'%%'转换为数据类型int时,经典SQL形式的SQL Server转换失败

[英]Classic ASP form giving SQL Server Conversion failed when converting the varchar value '%%' to data type int

我真的不喜欢使用经典的ASP,但是我必须...

我有这个表格:

<form name="QRForm" id="frm" method="post" action="qry.asp">  
    <input name="orderno" type="int" value="<%=Order_id%>">
    <input name="" type="submit" value="Go To Next Step" />
</form>

qry.asp这段代码来处理订单ID

<%Set MySQLConn = Server.CreateObject("ADODB.Connection")
                            MySQLConn.Open "driver={SQL Server};server=..."
GetOrder = "SELECT * FROM Jobs WHERE JobID='%" & Order_id &"%';"
                            Set ShowOrder = MySQLConn.execute(GetOrder)
                            if ShowOrder.EOF then%>
                            <div class="initiatives">
                                <p>No such record</p>
                            </div>
                        <%else
                            Do While Not ShowOrder.EOF%>
                            <div class="initiatives">
                                <p><span><%=ShowOrder("JobID")%></span><br />
                                <%=(ShowOrder("Payments"))%></p>
                                </div>
                        <%ShowOrder.Movenext
                            Loop
                            end if%> 

我做错了什么还是需要将Order_Id转换为整数? 如果可以,怎么办? 我尝试过cast convertconvert或通过会话传递它,但无济于事。 任何帮助,将不胜感激。

这是=符号,这是错误的。 如果您使用通配符(%),则SQL语法为

SELECT * FROM Jobs WHERE JobID like '%YourValue%'.

我注意到您使用的是ODBC连接字符串,该字符串应该可以工作,但对于SQL Server,通常认为Native Client或OLEDB是更好的选择-请参见下面的链接

http://www.connectionstrings.com/sql-server/

我实际上是通过使用

<% Dim OrderId 
OrderId =Request("Order")%>

  ......

 GetOrder = "SELECT * FROM Jobs WHERE JobID like'"+OrderId+"'"

注意:这种方式可能会使代码易于注入代码。 这是我知道的-但不在乎-

我认为您的代码应该也能正常工作John。 我只是无法在我的项目中使用它(它返回null)。 谢谢你不管

您提到的有关连接字符串的内容也非常有趣。 这段代码实际上是我对一个较旧的站点所做的某些修改的一部分,可能会使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM