node.js 连接 mssql 代码

2023-05-16

首先要安装 mssql 包: npm install mssql


第一种:

	var sql = require('mssql');
	//连接方式2:"mssql://用户名:密码@ip地址:1433(默认端口号)/数据库名称"
	sql.connect("mssql://sa:*******@localhost:1433/Test").then(function() {
	//sql.connect("mssql://sa:123@localhost:1433/test").then(function() {
	    // Query
	    new sql.Request().query('INSERT INTO [dbo].[T1]([fName]) VALUES(77777)').then(function(recordset) {
	        console.log(recordset);
	    });
	    // Stored Procedure
	});

第二种:
dbHelper.js

var mssql = require('mssql');  
var db = {};  
var config = {  
  user: 'sa',  
  password: '*******',  
  server: '127.0.0.1',   
  database: 'Test',  
  port:1433,  
  options: {  
    encrypt: true // windows on
  },  
  pool: {  
    min: 0,  
    max: 10,  
    idleTimeoutMillis: 3000  
  }  
};  
  
//执行sql,返回数据.  
db.sql = function (sql, callBack) {  
  var connection = new mssql.ConnectionPool(config, function (err) {  
    if (err) {  
      console.log(err);  
      return;  
    }  
    var ps = new mssql.PreparedStatement(connection);  
    ps.prepare(sql, function (err) {  
      if (err){  
        console.log(err);  
        return;  
      }  
      ps.execute('', function (err, result) {  
        if (err){  
          console.log(err);  
          return;  
        }  
  
        ps.unprepare(function (err) {  
          if (err){  
            console.log(err);  
            callback(err,null);  
            return;  
          }  
            callBack(err, result);  
        });  
      });  
    });  
  });  
};  
  
module.exports = db;


使用:同目录下
	var db = require('./dbHelper.js');  
	db.sql('select * from T1',function(err,result){  
	    if (err) {  
	        console.log(err);  
	        return;  
	    }  
	    console.log('===',result);  
	});  
	


数据库:



脚本:

CREATE TABLE [dbo].[T1](
	[fId] [int] IDENTITY(1,1) NOT NULL,
	[fName] [nvarchar](50) NULL,
 CONSTRAINT [PK_T1] PRIMARY KEY CLUSTERED 
(
	[fId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]


数据库事务:dbTransaction.js


var dbTransaction = {};  
var sql = require('mssql');  
var config = {  
  user: 'sa',  
  password: 'xinfu978',  
  server: '127.0.0.1',   
  database: 'Test',  
  port:1433,  
  options: {  
    encrypt: true // Use this if you're on Windows Azure  
  },  
  pool: {  
    min: 0,  
    max: 10,  
    idleTimeoutMillis: 3000  
  }  
};  
  
dbTransaction.getTransaction = function(callback){  
  
  var connection = new sql.ConnectionPool(config, function (err) {  
  
    var transaction = new sql.Transaction(connection);  
      
    callback(sql, transaction);  
  })  ;
};  
  
module.exports = dbTransaction;  



使用: 需要安装 async 包, npm install async

var async  = require('async');  
	var dbTransaction = require('./dbTransaction.js');  
	  
	dbTransaction.getTransaction(function(sql, transaction){  
	    //开启事物  
	    transaction.begin(function(err) {  
	  
	        if (err) {  
	            console.log(err);  
	            return;  
	        }  
	        //定义一个变量,如果自动回滚,则监听回滚事件并修改为true,无须手动回滚  
	    var rolledBack = false;  
	  
	    //监听回滚事件  
	    transaction.on('rollback', function(aborted) {  
	        console.log('监听回滚');  
	        console.log('aborted值 :', aborted);  
	        rolledBack = true;  
	    });  
	  
	    //监听提交事件  
	    transaction.on('commit', function() {  
	        console.log('监听提交');  
	        rolledBack = true;  
	    });  
	  
	    var request = new sql.Request(transaction);  
	    var task1 = function(callback){  
	        request.query("INSERT INTO [dbo].[T1]([fName]) VALUES(1111)", function(err, result) {  
	            if (err) {  
	                console.log(err);  
	                callback(err, null);  
	                return;  
	            }  
	            console.log('第一条语句成功');  
	            callback(null, result)  ;
	        }) ; 
	  
	    };  
	    var task2 = function(callback){  
	        request.query("INSERT INTO [dbo].[T1]([fName]) VALUES(22222)", function(err, result) {  
	            if (err) {  
	                console.log(err);  
	                callback(err, null);  
	                return;  
	            }  
	            console.log('第二条语句成功');  
	            callback(null, result)  ;
	        }) ;
	  
	    };  
	    var task3 = function(callback){  
	        request.query("INSERT INTO [dbo].[T12]([fName]) VALUES(3333)", function(err, result) {  
	            if (err) {  
	                console.log(err);  
	                callback(err, null);  
	                return;  
	            }  
	            console.log('第三条语句成功');  
	            callback(null, result)  ;
	        })  ;
	  
	    }  ;
	    async.series([task1, task2, task3],function(err,result){  
	      //  var err = "11";  
	            if (err) {  
	                console.log('出现错误,执行回滚');  
	                if (!rolledBack) {  
	  
	                    //如果sql语句错误会自动回滚,如果程序错误手动执行回滚,不然事物会一致挂起.  
	            transaction.rollback(function(err) {  
	                if (err) {  
	  
	              console.log('rollback err :',err);  
	              return;  
	                }  
	                console.log('回滚成功');  
	            });  
	              }  
	            } else {  
	                console.log('无错误,执行提交');  
	                //执行提交  
	                transaction.commit(function(err) {  
	                    if (err) {  
	  
	            console.log('commit err :',err);  
	            return;  
	                    }  
	                    console.log('提交成功');  
	          });  
	            }  
	    })  ;
	    });  
	})  ;	







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

node.js 连接 mssql 代码 的相关文章

  • Node 正常启动(node)、热更启动(nodemon)、部署(pm2)、安装包(npm、cnpm、yarn)、发布包(publish) 、node版本管理(NVM) 常用工具----学习笔记(五)

    文章目录 1 Node服务启动指令的配制 2 nodemon Node监听文件变化 自动重启服务的方法 3 pm2 线上部署使用pm2能自动守护进程 4 cnpm yarn 安装包 是使用npm cnpm yarn 5 注册与发布包 6 n
  • Node处理csv文件(利用csv-parse读取指定字符串内的文件片段)

    需求 读取一个csv文件 需要从指定字符串开始读取至指定字符串结束 由于csv文件可能使用不同环境打开编辑过 末尾包含很多多余的分隔逗号 去除这些逗号 使用 Stream const parse require csv parse cons
  • MSSQL数据库注入

    MSSQL数据库注入实践 一 MSSQL注入的基础知识 一 注入点的检测 1 数据库类型判断 概述 MSSQL数据库中 存在一个系统表sysobjects 可以通过判断这个表是否存在来判断该数据库是否为MSSQL数据库 SQL语句执行 se
  • Windows NodeJS 二进制文件安装

    第一步下载node下载 Node js 中文网 本人系统Win10 X64 如图 将下载的zip包解压到你自定义的目录 尽量不要有空格或中文 你懂的 作者选择了d盘下自定义目录D datastorage下 解压后的文件目录如图所示 在此目录
  • Async详解之一:流程控制

    转载 http freewind me blog 20120515 917 html 为了适应异步编程 减少回调的嵌套 我尝试了很多库 最终觉得还是async最靠谱 地址 https github com caolan async Asyn
  • npm 实现原理

    输入 npm install 命令并敲下回车后 会经历如下几个阶段 以 npm 5 5 1 为例 1 执行工程自身 preinstall 当前 npm 工程如果定义了 preinstall 钩子此时会被执行 2 确定首层依赖模块 首先需要做
  • 前端页面生成PDF方案之puppetter

    1 新建一个文件夹 例如 test 2 新建一个js文件 例如test js 3 进入test文件夹 在该目录下运行命令行 并执行下面命令 npm init 4 运行命令安装 npm i puppetter 5 编辑test js cons
  • Nodejs的学习Ⅵ(express、ejs模板、关于get与post请求、中间件、nodemon与pm2、app.js文件的说明)

    一 express的简单介绍与安装 ndoe js 一个基于javsscript的服务器环境 它的出现使得javascript有能力去实现服务器操作 而基于node js的Express则把原先的许多操作变的简单灵活 一系列强大特性帮助你创
  • node request 解决请求时 有时候 content-length 获取不到

    今天使用了 request 模块的时候 想获取每次请求的大小 以方便判断下载进度 网速等等 然后 content length 头总是获取不到 下面给出解决方法 request 模块的使用方法见 api 文档 https github co
  • 在node中使用es7

    今天学写了体验异步的终极解决方案 ES7的Async Await这篇文章 发现作者是用 es7 的语法写 node 所以顺便学习了一下如何在 node 中使用 es7 的语法 记录一下 首先安装 babel cli yarn add bab
  • Node.js——回调函数及事件处理机制

    目录 回调函数 定义 理解 事件处理机制 补充 回调函数 定义 什么是回调函数呢 通俗的讲 将一个函数A作为参数传递给函数B 在函数B内对函数A进行调用 函数A就是回调函数 Node js 异步编程的直接体现就是回调 回调函数在完成任务后就
  • Nginx常用命令以及升级(window)

    nginx Windows作为标准控制台应用程序 不是服务 运行 可以使用以下命令对其进行管理 start nginx 启动Nginx nginx s stop fast shutdown 快速停止 nginx s quit gracefu
  • npm指令执行前执行自定义代码

    1 基本逻辑 npm start执行前执行node bin wb handle scripts wb node bin wb handle npm start wb handle源码 删除deleteNodeModules配置的最后一级目录
  • node连接mysql实现带分页列表多条件模糊查询效果-新手教程

    前言 使用node连接mysql 这里是模糊查询方法完整流程 第一 安装我们的express脚手架 入口 第二 在根目录下创建model文件夹 里面放两个文件 1 mysql config js 这里放的是我们的数据库配置 配置链接数据库参
  • js __proto__、prototype 、constructor 三者关系总结

    一 proto 属性 proto 怎么读 杠杠 proto 杠杠 proto 读作 dunder proto double underscore proto 的缩写 并且它前后两边 分别是 两个 下划线 由 proto 属性来连接对象 直到
  • 解决多个Tabs频繁切换造成数据错乱问题的方案

    一 利用axios的cancelToken import post from util ajax import axios from axios const CancelToken axios CancelToken post let ca
  • 如何在 Windows 10 上安装 Node.js

    Node js 是一个开源的 JavaScript 运行时环境 它允许在 Web 浏览器之外运行 JavaScript 本教程将帮助您在 Windows 系统上安装 Node js 在 Windows 上安装节点 以下是在 Windows
  • 文字转png图片

    body中的数据格式 Convert text to PNG image param text param options param options font 30px sans serif css style font param op
  • Node.js爬虫实战:搜狗图片爬取

    说在前面 当我们在网上寻找图片时 经常会遇到需要批量下载搜索结果中的图片的情况 而搜狗作为中国颇具影响力的搜索引擎之一 其图片搜索功能提供了丰富多样的图片资源 在这种情况下 我们希望能够通过编程的方式 批量下载搜狗图片搜索结果中的图片 以便
  • MSSQL 存储过程:功能和用法详解

    摘要 MSSQL 存储过程是一种在 Microsoft SQL Server 数据库中存储和执行代码的强大工具 本文将详细介绍 MSSQL 存储过程的功能和用法 包括定义和创建存储过程 参数的使用 事务控制 错误处理以及优点和示例等方面 帮

随机推荐

  • net core3.0 修改 web 端口

    修改程序发布之后的端口 新建项目 xff0c 啥都不干启动成功后 xff0c 在 appsettings json 中 添加配置 urls http 8080 34 Logging 34 34 LogLevel 34 34 Default
  • go 语法入门

    go 语法 循环 package main import 34 fmt 34 func main i 61 0 for i lt 1000 i 43 43 fmt Println 34 循环次数 xff1a 34 i 定义局部变量 var
  • windows vscode mingw c++入门(1)

    windows vscode mingw c 43 43 入门 xff08 1 xff09 安装 mingw32 https osdn net projects mingw downloads 68260 mingw get setup e
  • windows vscode mingw c++入门(2)

    windows vscode mingw c 43 43 入门 xff08 2 xff09 导包 新建文件夹 first 与 mian cpp 同级新建文件夹 first新建两个文件q h pragma once 防止重复导入 void q
  • netcore3 sqlite

    net core3 1 EF 43 SQLite nuget 安装这3个包 microsoft EntityFrameworkCore Microsoft EntityFrameworkCore Sqlite Microsoft Entit
  • windows 上 consul

    本机开发模式 consul官网 本机开发者模式 consul exe agent dev 局域网 consul exe agent dev client 0 0 0 0
  • go 通道(channel),go 线程间通信

    go 通道 xff08 channel xff09 是用来传递数据的一个数据结构 通道可用于两个 goroutine 之间通过传递一个指定类型的值来同步运行和通讯 操作符 lt 用于指定通道的方向 xff0c 发送或接收 span clas
  • windows 批量关闭 python 程序工具

    windows 批量关闭 python 程序工具 在windows上启动大量pythonw 后台程序 xff0c 都不知道哪个是哪个 l par query par a show all lk par 终止查询到的程序 python 源码
  • windows+vscode+MinGW+cmake(学习1)

    统一下载 64 位安装 1 安装vscode 官网 安装插件 2 安装 mingw 官网 或者 3 安装cmake 官网 安装好之后 创建 项目文件夹 cmaketest1 创建文件 xff08 1 xff09 main c span cl
  • Springcloud、Springmvc+Nacos注册中心实现服务注册

    目录 背景 实现 Nacos环境搭建 Springcloud服务注册 Maven配置 代码实现 Springmvc服务注册 Maven依赖 代码实现 背景 不管是springcloud还是springmvc实现服务的自动注册 xff0c 都
  • go 并发学习-互斥锁

    go 并发学习 互斥锁 并发输出 inums 自增编写代码运行输出并不能正常输出 使用互斥锁修改代码结果结果正常 使用锁时注意上锁的资源独立函数有些时候用读写锁如果可以改为使用 channel 并发输出 inums 自增 编写代码 pack
  • Ava Trader MT4 Terminal EA交易(1)运行第一个程序

    Ava Trader MT4 Terminal EA交易 xff08 1 xff09 运行第一个程序 1 打开程序化交易编译器 2 文件 新建 下一步 下一步 一直下一步 43 43 11 mq4 Copyright
  • Ava Trader MT4 Terminal 程序化交易(2)获取品种交易数据

    Ava Trader MT4 Terminal 程序化交易 xff08 2 xff09 获取品种交易数据 官方文档 Example 43 43 Script program start function 43
  • Ava Trader MT4 Terminal 程序化交易(3)选择使用那个策略与品种

    Ava Trader MT4 Terminal 程序化交易 xff08 3 xff09 选择使用那个策略与品种 选择品种 右键 打开图表 选择 K线 周期 选择策略 xff0c 长按鼠标左键拉到 图表 xff0c 点击确定 运行中 xff0
  • Ava Trader MT4 Terminal EA交易(4)注册模拟账号,写第一个策略

    注册模拟号 https myvip avatrade cn 策略要求 监控一分钟k线 xff0c 如果连续两根阳线 xff0c 就 做多 设置 10 个点差值的 止盈跟 止损 新建ea模板 first1 代码如下 43 43 first1
  • Golang +vscode 环境搭建

    Golang 环境搭建 Golang 43 vscode 环境搭建1 下载go安装包2 随便创建 gohome 目录3 国内链接谷歌需要代理 xff0c 使用go代理4 在gohome目录创建 src 文件夹5 在first文件夹创建 ma
  • cmake 添加子库

    cmake 添加子库 文件目录 http lib2 testlib CMakeLists txtTest cppTest h CMakeLists txtmain cpp 文件如下 main cpp include lt iostream
  • debian/ubuntu 安装c++开发环境 (2)

    Debian ubuntu 安装c 43 43 开发环境 安装环境 gcc sudo apt get install gcc sudo apt get install make sudo apt get install cmake sudo
  • c++ 资源回收学习

    c 43 43 资源回收学习 c 43 43 语言的资源回收 使用 delete 例子 include lt iostream gt int main int tmpi 61 new int tmpi 61 1 std cout lt lt
  • node.js 连接 mssql 代码

    首先要安装 mssql 包 xff1a npm install mssql 第一种 xff1a var sql 61 require 39 mssql 39 连接方式2 xff1a 34 mssql 用户名 密码 64 ip地址 1433