Node.js操作Firebird数据库教程


Posted in Javascript onMarch 04, 2016

      Firebird是一个跨平台的关系数据库系统,目前能够运行在Windows、linux和各种Unix操作系统上,提供了大部分SQL-99标准的功能。它既能作为多用户环境下的数据库服务器运行,也提供嵌入式数据库的实现。

Firebird脱胎于Borland公司的开源版数据库Interbase6.0,是一个完全非商业化的产品,用C和C++开发。

一个firebird数据库服务器能够管理多个独立的数据库,每一个数据库同时可支持多个客户端连结。总之:它是一个开源的,强大的,可以自由使用的数据库(即使是商业上的使用)。

Node.js操作Firebird数据库教程

特点

Firebird是一个真正的关系数据库,支持存储过程、视图、触发器、事务等大型关系数据库的所有特性;

Firebird支持SQL92的绝大部分命令,并且支持大部分SQL99命令,新版Firebird 2.0对SQL99的支持更完整;

Firebird源码基于成熟的商业数据库Interbase,有良好的稳定性,与Interbase有良好的兼容性;
不用考虑授权费用(免费),不用担心将来有一天你或你的客户因为使用盗版而被数据库开发商告上法庭;

发布简易,安装文件只有几M,且高度可定制,客户端的分发也很简单,只需一个DLL文件;
Firebird的一嵌入式服务器版本,不用安装,直接运行,基于单机开发首选;

Firebird的运行效率非常高;

具备高度可移植性,可在Linux,Unix,MacOS,Windows,Solaris系统下运行,而且数据库格式完全一样,不用修改;

开发环境支持良好,Delphi,C++Builder不用通过ODBC连接,直接用原生开发接口开发基于Firebird的程序。

为什么使用FireBird?

对于小型企业用户而言,现在的开放源码数据库有两点不足:要么太大(如MySQL、PostgreSQL);要么太小,并且缺乏功能和文档(如HypersonicSQL和McKoi)。在很多应用环境中,用户需要有一个大小适中且功能齐备的数据库。

Firebird相对来说比较小,其RPM版本只有2.6MB。这使其可以称得上是理想的“嵌入式数据库”,可用于与其它应用程序服务器和应用程序捆绑。Firebird具有大部分成熟数据库所具有的功能,比如支持存储过程、SQL兼容等。如果用户有使用DB2或PostgreSQL的经验,就会发现Firebird与它们的语法非常相似,数据类型和数据处理方式也很类似。

安装

前面讲了那么多关于FireBird的内容,现在开始来讲解如何用Node来操作FireBird。

如果想通过Node来操作FireBird,首先要安装操作FireBird的模块——node-firebird。如下代码:

npm install node-firebird

安装完成以后,我们就可以在程序中使用node来操作FireBird了,如下代码:

var FireBird = require('node-firebird');

Connection options

当我们通过node来操作FireBird时,首先要对数据库连接进行设置,包括连接的ip地址、端口号、数据库名称(可以是包括路径的全名)、连接的用户名、密码。如下代码:

var options = {};
 options.host = '127.0.0.1';          // 设置主机地址
 options.port = 3050;              // 端口号
 options.database = '/home/user/test.fdb';   // 数据库名称
 options.user = 'SYSDBA';            // 用户名
 options.password = 'masterkey';        // 密码

这样数据库的连接就设置完成了。

escape

在node-firebird模块中有一个名为escape的方法,它的返回值为String类型。使用该方法可以防止SQL注入,如下代码:

FireBird.escape(value) -> return {String}

实例如下:

var FireBird = require('node-firebird');
var sql1 = 'SELECT * FROM a WHERE ID='+Firebird.escape(2) ;
console.log(sql1);

create

create方法用于建立数据库,其语法格式如下:

FireBird.create(options, function(err, db));

如下代码:

FireBird.create(options,function(err,db){
  if(err)
    throw err;
  console.log('创建数据库成功');
  db.detach(); //关闭数据库连接
});

注意:当数据库存在时候,用该方法建立数据库会将原数据库覆盖,从而导致数据丢失。

query

db.query方法的用法前面已经介绍了一些,在这里将继续给大家讲db.query()的用法。当query语句中是查询语句时,返回的结果为对象类型的数组(即result的值)。我们可以使用db.query()对数据库中的表进行添加,修改,删除,更新操作。db.query()有两种用法,一种是无参数的查询,一种是有参数的查询。

有参数的查询:

db.query(query, [params], function(err, result))

实例代码如下向表a中插入数据:

FireBird.attach(options, function(err, db) {
  if (err)
    throw err;
  // db = DATABASE
  db.query('insert into a (id,name) values(?,?)',[1,'Tom'], function(err, result) {
    if (err)
      throw err;
    console.log("insert success!");
    db.detach();
  });
});

实例代码更新a表中的数据:

FireBird.attach(options, function(err, db) {
  if (err)
  throw err;
  // db = DATABASE
  db.query("update a set name='Ann' where id=1", function(err, result) {
    if (err)
      throw err;
    console.log("update success!");
    db.detach();
  });
});

以上就是本文的全部内容,教会大家如何使用Node.js操作Firebird数据库,希望大家喜欢。

Javascript 相关文章推荐
让插入到 innerHTML 中的 script 跑起来的实现代码
Jul 01 Javascript
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
Oct 17 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
Sep 27 Javascript
js自定义事件及事件交互原理概述(二)
Feb 01 Javascript
php+js实现倒计时功能
Jun 02 Javascript
jquery处理json对象
Nov 03 Javascript
详解jQuery Mobile自定义标签
Jan 06 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
Oct 21 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
Nov 22 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
Jan 18 Javascript
Vue如何基于vue-i18n实现多国语言兼容
Jul 17 Javascript
javascript实现移动端轮播图
Dec 09 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
Mar 04 #Javascript
node.js微信公众平台开发教程
Mar 04 #Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
Mar 04 #Javascript
深入学习AngularJS中数据的双向绑定机制
Mar 04 #Javascript
简单的jQuery banner图片轮播实例代码
Mar 04 #Javascript
百度地图给map添加右键菜单(判断是否为marker)
Mar 04 #Javascript
jquery实现右侧栏菜单选择操作
Mar 04 #Javascript
You might like
Php部分常见问题总结
2006/10/09 PHP
php 启动时报错的简单解决方法
2014/01/27 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
php简单实现多语言切换的方法
2016/05/09 PHP
discuz论坛更换域名,详细文件修改步骤
2020/12/09 PHP
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
jquery+json实现动态商品内容展示的方法
2016/01/14 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
2016/05/24 Javascript
JS生成不重复的随机数组的简单实例
2016/07/10 Javascript
JS前向后瞻正则表达式定义与用法示例
2016/12/27 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
vue axios post发送复杂对象问题
2019/06/04 Javascript
python zip文件 压缩
2008/12/24 Python
python 提取文件的小程序
2009/07/29 Python
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
Python 26进制计算实现方法
2015/05/28 Python
一张图带我们入门Python基础教程
2017/02/05 Python
python 获取当天凌晨零点的时间戳方法
2018/05/22 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
windows下的pycharm安装及其设置中文菜单
2020/04/23 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
瑜伽灵感珠宝:Satya Jewelry
2018/01/06 全球购物
2014党员学习《反腐倡廉警示教育读本》思想汇报
2014/09/13 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
2014年乡镇纪委工作总结
2014/12/19 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
赢在执行观后感
2015/06/16 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL