节点。js连接Sql Server 2008及数据层封装详解

  

本文实例讲述了节点。js连接Sql Server 2008及数据层封装。分享给大家供大家参考,具体如下:

  

最近需要学习Node . js,所以很久没写东西了,疯狂的看了很久的书。有关于Node . js的学习知识,可以参考官网教程,或者书籍《Node . js权威指南》。这里我记录一下节点。js连接Sql Server 2008的步骤。

  

node . js连接数据库需要特定的模块msnodesql,这个模块需要特定的环境去生成才可以使用。

  

前期准备如下:

  

1。安装节点。js(官网上下载)
  2 .安装node-gyp(安装好节点。js后进入到npm目录,执行npm安装node-gyp)
  3.安装python 2.7.x(上可以下载,注意下载2.7。X版本)
  4.安装Visual c++ 2010 (vs2010中必须有c++模块,也可以单独下载微软)
  5.安装SQL Server本地客户端()

11.0   

这些全部安装好后,就搭建好了生成msnodesql模块的环境,现在可以去官网的模块上下载msnodesql模块了(注意利用<代码> npm intsall msnodesql>   

1。<代码> node-gyp配置

  

2。<代码> node-gyp构建代码或<代码> node-gyp构建——调试>   

如果生成成功的话,你的msnodesql底下会出现用Visual c++ 2010生成后的许多工程项目文件.node.js虽然是纯javascript代码,但大部分功能只是封装成了JS脚本,许多底层的实现其实是C/c++,就好比这个msnodesql模块,里面就有很多CPP文件,所以需要生成为VC项目。

  

<强>测试:

  

新建文件. js:

        var obj=要求(“msnodesql”);   console.log (obj);      之前      

科比到节点。exe目录下,执行节点测试

  

若不出意外则会打印msnodesql的对外接口属性。若不能正确输出,则

  

1。说明msnodesql安装失败或者环境美搭建好,检查上面的安装和生成步骤。

  

2。说明msnodesql路径没设置好:node.exe会默认去搜索node_module文件下的模块,而msnodesql本身也是一个模块,一个模块的属性是由. json来设定的,检查。json的主要属性,看是否是“主要”:“。/lib/sql.js sql.js才是monodesql的入口。

  

最后附一段操作数据库的演示作为参考:

        var sql=要求(“msnodesql”);   var conn_str="司机={SQL Server本地客户端11.0};服务器={。};数据库={nodetest}; uid=sa; PWD=123456;”;   sql。打开(conn_str函数(呃,康涅狄格州){   如果(err) {   console.log(“发生错误的);   }   sql。queryRaw (conn_str“select *的用户”,函数(呃,结果){   如果(err) {   console.log(错);   }   其他{   (var=0;我& lt;results.rows.length;我+ +){   console.log(结果。行[我][0]+ results.rows[我][1]);   }   }   })   })      之前      

  

前面简单介绍了nodejs连接,状态"置疑"接下来介绍将所有数据库操作封装起来,方便项目调用的方法。

  

思路:所有配置参数写入xml文件,数据库操作封装起来,外部只暴露增删改查方法,方法参数只需要sql语句。

  

1. nodejs读取xml文件

  

nodejs解析xml文件需要模块libxmljs,安装:<代码> nmp安装libxmljs

  

config . xml文件如下:

        & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt; root>   & lt; mydb司机=癝QL Server本地客户端11.0”数据库服务器=癤XX”=癤XX”用户=" XXX " pwd=癤XX”比;   & lt;表名=" FelixTest "/比;   & lt;/mydb>   & lt;/root>      之前      

建立operateXML.js:

     /*   作者:   Felix.X.Zhang   日期:   2014-6-19   作品简介:   此模块为您提供的操作(读)的xml文件。   *///异步方法/*   var libxmljs=要求(“libxmljs”);   var fs=要求(fs);   var路径=啊?config . xml”;   var参数=new params ();   fs。readFile函数的路径,use utf8,(呃,数据){   如果(err)把犯错;   xmlDoc var=libxmljs.parseXmlString(数据);//xpath查询   var mydb=xmlDoc.get ('//mydb ');   var表=xmlDoc.get (“//mydb//表”);   param.mydb_server=mydb.attr(服务器)value ();   param.mydb_database=mydb.attr(“数据库”)value ();   param.mydb_user=mydb.attr(“用户”)value ();   param.mydb_pwd=mydb.attr (pwd) value ();   param.table_name=table.attr(“名字”)value ();   });   */函数参数(){   this.mydb_driver=" ";   this.mydb_server=" ";   this.mydb_database=" ";   this.mydb_user=" ";   this.mydb_pwd=" ";   this.table_name=" ";   }   函数getParamObj () {   var libxmljs=要求(“libxmljs”);   var fs=要求(fs);   var路径='。/config1.xml ';   var参数=new params ();   var数据;   尝试{   data=https://www.yisu.com/zixun/fs.readFileSync(路径,use utf8);   }   抓住(err) {   把犯错;   }   xmlDoc var=libxmljs.parseXmlString(数据);   var mydb=xmlDoc.get ('//mydb ');   var表=xmlDoc.get (“//mydb//表”);   param.mydb_driver=mydb.attr(司机)value ();   param.mydb_server=mydb.attr(服务器)value ();   param.mydb_database=mydb.attr(“数据库”)value ();   param.mydb_user=mydb.attr(“用户”)value ();   param.mydb_pwd=mydb.attr (pwd) value ();   param.table_name=table.attr(“名字”)value ();//console.log(参数。mydb_server + " " + param.table_name);   返回参数;   }   exports.getParamObj=getParamObj;      

节点。js连接Sql Server 2008及数据层封装详解