如何在 Node.JS 中为 MSSQL 创建准备好的语句?

2024-01-05

我需要将 Javascript 中定义的字符串插入到 SQL 表中。

这是我到目前为止所拥有的:

JavaScript:

var message = "It's a great day today!";  
$.post('www.server.com/message='+message, function(response){
console.log(response);
});

Node.js 服务器:

//..... a bunch of code has been used to accept the HTTP request and get the message...
// for the purpose of this example, the message is asigned to 'NodeMsg'
var mssqldb = require("../core/mssql"); 
var NodeMsg = theMessageReceivedFromHTTPRequest;
function saveMessage(message) {
    mssqldb.executeMssql("insert into messages (message, status) VALUES('"+message+"', 'new')", function (err) {
      if (err) {
        httpMsgs.show500(req, resp, err);
      }//end if
      else {
        httpMsgs.sendJson(req, resp, 'success');
      }//end else
    });
};

mssql.js(node.js 文件):

var mssqldb = require("mssql");
var settings = require("../settings");

exports.executeMssql  = function(sql, callback) {
  var conn = new mssqldb.Connection(settings.mssqlConfig);
  conn.connect()
  .then(function(){
    var req = new mssqldb.Request(conn);
    req.query(sql)
    .then(function (recordset) {
      callback(recordset);
    })
    .catch(function(err){
      console.log(err);
      callback(null, err);
    });
  })
  .catch(function(err){
    console.log(err);
    callback(null, err);
  });
};//end executeMssql

正在发生的事情的摘要:

  1. 我将消息定义为字符串。 (注意它包含单引号)
  2. 我将该字符串发送到 Node.js 服务器
  3. 我正在使用 Node.js 将字符串发送到 mssql

问题:在了解了有关面向对象程序的更多信息后,我意识到我执行插入的方式是非常不受欢迎的,因为它对 SQL 注入是开放的。此外,由于字符串中存在单引号,代码会在执行 SQL 查询期间中断。

解决方案:根据我找到的大多数资源,解决方案是使用“准备好的语句”。

我的问题:

我究竟如何转换我已经完成的内容,以利用准备好的语句?我在网上搜索了几个小时,但找不到一个很好的例子来说明如何使用 Node.JS for MSSQL(而不是 MySQL)执行准备好的语句,这对于 Node.Js 的初学者来说是可以理解的


如果您使用的是 Tedious 跨平台 MSSQL 驱动程序实现,则文档位于此处:http://tediousjs.github.io/tedious/parameters.html http://tediousjs.github.io/tedious/parameters.html

基本上,您可以为需要注入的值准备一个带有“@xxx”占位符的 SQL 语句,然后将这些参数的实际值绑定到您的请求,然后执行您的请求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Node.JS 中为 MSSQL 创建准备好的语句? 的相关文章

随机推荐

  • Hsqldb 存储过程

    我正在尝试在内存 Hsqldb 数据库中设置一个存储过程以进行测试 我正在使用的存储过程是在 MySql 中开发的 因此我想使用 HSqlDb 设置它以适应我的测试套件 我正在尝试创建该过程的简化版本 但目前还没有任何乐趣 程序是 CREA
  • Tensorflow Metal 插件已注册错误

    我已经使用安装了 Tensorflow 和 Metal 插件pip在 Mac Mini 2020 M1 上 pip3 install tensorflow macos tensorflow metal pip3 uninstall nump
  • 如何限制 while 循环中的项目

    这是我的项目中的 while 循环 div class index a href img width 200 height 171 alt src a div
  • jQuery 多次点击事件

    我被迫使用从外部服务器加载的脚本 该脚本基本上添加了一个元素 div class myClass 并绑定一个click的方法 事情是 在click与元素关联的函数 它们有一个return false声明在最后 我也有自己的脚本 我正在尝试添
  • 如何在 OSX 上卸载 pip?

    我运行了以下命令 easy install pip sudo pip install setuptools no use wheel upgrade 如何反转这两个命令以使我的 python 在 OSX 中恢复到其原始状态 删除 pip 作
  • R Shiny:数据表行的鼠标悬停文本

    有没有办法在将鼠标悬停在数据表显示中的行 记录 上时显示鼠标悬停文本 在 StackOverflow 上解决了一些类似的问题后 我发现了 2 个示例代码 一个显示列单元格的悬停文本 另一个在鼠标悬停时突出显示整行 显示列单元格悬停文本的示例
  • 示例 XSD 失败并显示“错误:未找到元素 X 的声明”

    尽管我是 xml 解析领域的新手 但我能够xsd创建有效的c 并成功编译和链接 但编译器优化 了实例化 所以 从第一步开始 我尝试你好世界CodeSynthesis 中的 xml 示例 http www codesynthesis com
  • 如何查看有关 Firebase JavaScript 客户端正在执行的操作的更多详细信息?

    我想更深入地了解 Firebase JavaScript 客户端库正在做什么 我正在使用 Firebase 开发一个 JavaScript 应用程序 该应用程序必须处理很多复杂性 例如 它必须处理网络中断和间歇性高延迟期 客户端库正在处理这
  • 如何在 Python 上使用 PuLP GLPK 为混合整数线性规划 (MILP) 的决策变量编写 IF 条件?

    我正在尝试使用 PuLP 上的混合整数线性规划和 Python 上的 GLPK 求解器来解决优化问题 到目前为止 我已经成功解决了带有约束的基本优化问题 例如 prob LpProblem MILP LpMinimize x1 LpVari
  • PHP 对象运算符优先级 (->)

    我写了一些代码 class a public b f gt c a new a b b echo a gt b f 当我使用 cli 时 它输出 c 但是当我使用 apache http 服务器时 抛出错误Illegal string of
  • 无需 JavaScript 即可模拟 bootstrap side popover

    我有一个仅支持现代浏览器的网站 我喜欢 bootstrap popover 的美感 但真的不喜欢它如何依赖 jquery 小部件和 javascript 来定位箭头 我理解为什么它曾经是必要的 但现在确实不应该了 我想看看我是否能得到类似的
  • 在 Dart 中如何判断 DOM 何时准备就绪?

    我想在页面准备好后获取有关某些 DOM 元素的一些信息 但我还没有弄清楚如何判断这是什么时候 我尝试过使用document on contentLoaded and document on readyStateChange 但似乎都不起作用
  • 为不同的存储库设置不同的配置[重复]

    这个问题在这里已经有答案了 我想知道如何更改命令的内容git config list 我将从中提取 分叉一个存储库GitHub https github com 我将在我的 Windows Linux 和 Mac 工作站上配置此类存储库 如
  • 在 MATLAB 中计算函数的反函数

    如何在 MATLAB 中计算函数的反函数 假设你想计算 f x e x 的倒数 代码是什么 如果分析方法失败 尽可能首选 请使用数值方法 给定 y 并猜测 x0 的逆 x fzero x f x y x0 或者当 x 的范围已知在 xmin
  • Android:检测活动何时返回到上一个活动

    我有一个带有 listView 的活动 A 用户单击启动活动 B 的任何项目 根据用户在活动 B 中执行的操作 可能会更改活动 A 上的 listView 所以我的问题是 当用户从活动 B 返回到活动 A 时 如何告诉活动 A 它已恢复 我
  • 数据列值不会更改为浮点型

    我有一个数据框 df Name Stage Description 0 sri 1 sri is one of the good singer in this two 1 nan 2 thanks for reading 2 ram 1 r
  • 找不到 JupyterLab 应用程序资产

    我刚刚在我的 MacBook 上使用 pip 下载了 jupyter lab 当我在终端上运行 jupyter lab 时 浏览器打开并出现以下错误 JupyterLab 错误 JupyterLab 应用程序资产未在以下位置找到 选择 自制
  • Bootstrap 中的固定宽度表格列

    我正在使用 Bootstrap 3 作为后端应用程序 该应用程序在表中显示数据 每行末尾有一个删除按钮 有时还有编辑按钮 我对具有删除按钮的列使用 col md 1 而在其他列上使用 col md x 的变体 效果很好 让我烦恼的一件事是
  • 如何在使用 iText 创建的 PDF 中显示阿拉伯语

    我需要您的帮助来显示阿拉伯语内容并在我尝试创建的 PDF 示例中从右向左开始书写 这是示例代码 public static void main String args throws IOException try BaseFont Aria
  • 如何在 Node.JS 中为 MSSQL 创建准备好的语句?

    我需要将 Javascript 中定义的字符串插入到 SQL 表中 这是我到目前为止所拥有的 JavaScript var message It s a great day today post www server com message