Sql server NodeJS和MSSQL-在类似的位置插入parm。。。并显示运行的SQL

Sql server NodeJS和MSSQL-在类似的位置插入parm。。。并显示运行的SQL,sql-server,node.js,Sql Server,Node.js,我有一个函数,它执行SQL查询并返回JSON输出 我如何在like子句中插入参数?例如,student\u lastname,如“ABC%”,其中ABC将是参数?如果需要的话,我可以自己组合SQL,只是尝试遵循最佳实践并避免SQL注入 当下面的SQL无法返回任何行时,如何显示它实际运行的SQL?我可以做一个console.log(sql.query)之类的操作吗?现在,我将尝试使用SQL事件探查器查看发生了什么 代码: 创建一个存储过程;不要连接动态SQL。然后,您可以传入参数并确保注入安全。实

我有一个函数,它执行SQL查询并返回JSON输出

  • 我如何在like子句中插入参数?例如,
    student\u lastname,如“ABC%”
    ,其中ABC将是参数?如果需要的话,我可以自己组合SQL,只是尝试遵循最佳实践并避免SQL注入

  • 当下面的SQL无法返回任何行时,如何显示它实际运行的SQL?我可以做一个
    console.log(sql.query)
    之类的操作吗?现在,我将尝试使用SQL事件探查器查看发生了什么

  • 代码:


    创建一个存储过程;不要连接动态SQL。然后,您可以传入参数并确保注入安全。实际上,没有安全的方法将字符串文字连接到动态sql字符串。此场景是描述注入攻击时使用的典型示例。SQL注入不能传递到parm吗?在使用where-like的情况下,我似乎需要使用dynamic exec SQL?我已经看到MySQL可以做的一些事情,但是还没有找到与mssql模块对应的,例如。。有一个sql.format…我肯定有一些节点包可以帮助sql参数化,但我承认,这不是我的专业领域。关于参数,您必须将其作为参数传递给SQL;不仅仅是连接一些东西。这就是它变得有点模糊的地方,因为您必须找到一个允许您参数化SQL的节点包。理想情况下,它允许您定义一个proc名称,以及一个由节点包映射的参数列表,但类似于您提到的MySQL方法,其中包基本上进行了奇特的字符串替换,您可以查看或创建一个存储过程;不要连接动态SQL。然后,您可以传入参数并确保注入安全。实际上,没有安全的方法将字符串文字连接到动态sql字符串。此场景是描述注入攻击时使用的典型示例。SQL注入不能传递到parm吗?在使用where-like的情况下,我似乎需要使用dynamic exec SQL?我已经看到MySQL可以做的一些事情,但是还没有找到与mssql模块对应的,例如。。有一个sql.format…我肯定有一些节点包可以帮助sql参数化,但我承认,这不是我的专业领域。关于参数,您必须将其作为参数传递给SQL;不仅仅是连接一些东西。这就是它变得有点模糊的地方,因为您必须找到一个允许您参数化SQL的节点包。理想情况下,它允许您定义一个proc名称,以及一个由node包映射的参数列表,但类似于您提到的MySQL方法,该包基本上在哪里进行了奇特的字符串替换,您可以查看或
    return sql.connect(sqlConfig).then(pool => {
            // Query - how to fold in my parameter in a like statement 
            return pool.request()
            .input('parms_initialLettersLastname', sql.VarChar(50), initialLettersLastname)
            .query("select student_id, student_firstname, student_lastname, student_city, student_state, student_zip from students where student_lastname like '@parms_initialLettersLastname%' ORDER BY student_lastname, student_firstname ")
        }).then(function(result) {
            console.log("getStudents:then(result=>"); 
            console.dir(result);
            sql.close(); 
            return result; 
        })
        .catch(err => {
            // ... error checks 
            console.log("DB Error1: " + err); 
            //console.log(pool.request.query);   // how to print out sql to debug error? 
            sql.close(); 
            throw err; 
        })