【问题标题】:How to use the ADODB.Command with the recordset in Classic Asp如何将 ADODB.Command 与 Classic Asp 中的记录集一起使用
【发布时间】:2015-01-26 02:19:20
【问题描述】:

所以情况就是这样。我尝试使用一种快速的方法从我的数据库中获取信息并将其放入表中。显然,如果我从以下选择中询问太多信息,它将无法正常工作。

<%
var myConn, myRec, refCo, myCmd;
refCo = Request.querystring("refC");
Response.Write(refCo);

myConn = new ActiveXObject("ADODB.Connection");
myRec = new ActiveXObject("ADODB.Recordset");
myCmd = new ActiveXObject("ADODB.Command");

myConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/inetpub/wwwroot/unsite/database/world2003.mdb;");
/* myCmd.ActiveConnection = myConn;
myCmd.CommandText = "SELECT NameCountry, Capital, Language, Area, Population, Descripton FROM COUNTRIES WHERE NumCountry = " + refCo";
myCmd.Execute(); */

myRec.Open("SELECT NameCountry, Capital, Language, Area, Population, Descripton FROM COUNTRIES WHERE NumCountry = " + refCo,myConn);%>

看到 myRec.Open 了吗?它不允许我通过资本。它只是不会。我认为这可能太多了,并且使用更长的形式,即 ADODB 命令。假设我取下 cmets 并使用 myCmd,它根本不起作用。谁能帮帮我?

【问题讨论】:

  • 如果您首先要不安全地传递参数,为什么还要使用ADODB.Command?使用 Command 对象的全部意义在于生成参数化查询,以保护您的应用程序免受 SQL 注入攻击。

标签: asp-classic adodb jscript activexobject


【解决方案1】:

这不是因为选择列表中的项目数,而是因为您有一个保留字Language作为字段名。您可以将该字段重命名为其他名称或将其转义为 [Language]

将您的查询更改为:SELECT NameCountry, Capital, [Language], Area, Population, Descripton FROM COUNTRIES WHERE NumCountry = " + refCo,它应该可以工作

看到这个: List of reserved words in Jet 4.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    相关资源
    最近更新 更多