Sql server NodeJS和MSSQL-在类似的位置插入parm。。。并显示运行的SQL
我有一个函数,它执行SQL查询并返回JSON输出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。然后,您可以传入参数并确保注入安全。实
student\u lastname,如“ABC%”
,其中ABC将是参数?如果需要的话,我可以自己组合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;
})