node 存储过程_用Node.js操作跨平台数据库Firebird

FireBird

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

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

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

0b6370d4222b1832d779d45209588820.png

特点

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();    });});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙是内核名字,华为徐直军:鸿蒙只是内核的名字,是媒体给误解成操作系统...

集微网消息(文/Jimmy),华为轮值董事徐直军表示鸿蒙操作系统名字是媒体取得,华为并没打算取这个名字。他解释称,本来鸿蒙这个是用于华为内部一个内核的名字,只是挂在市场监管总局那里注册了。然后不知道哪个媒体好朋友看到了这个&a…

手机进程设置多少个最好_安卓手机难逃卡顿宿命?打开4个系统设置,秒变新机般流畅...

近两年安卓手机的进步无疑的巨大的,不论是界面美观性、系统流畅度,还是功能的丰富性都有很大的进步,但是针对安卓的旧设备,用了两三年依旧开始变得卡顿,难道安卓手机真的难逃卡顿的宿命吗?虽然不能解决&…

html5新增的js,HTML5新增属性data-*和js/jquery之间的交互及注意事项

html的data-*属性是HTML5的新属性,用的时候在IE8html的data-*属性是HTML5的新属性,用来自定义属性,以在JS 中控制,用不会出问题,就是用js去获得的时候会有问题, 不过用Jquery的$(element).attr("data-…

韦东山 IMX6ULL和正点原子_GPIO和Pinctrl子系统的使用在100ASK_IMX6ULL上机实验

来源:百问网作者:韦东山本文字数:924,阅读时长:3分钟阅读本节前先阅读:Pinctrl子系统重要概念GPIO子系统重要概念基于GPIO子系统的LED驱动程序1.1 确定引脚并生成设备树节点NXP公司对于IMX6ULL芯片&#xf…

php foreach 收邮件_php机制本身不提供多线程的操作,有了swoole就不一样了

多个任务同时执行比如,我们要对已知的用户数据进行判断,是否需要发送邮件和短信,如果需要发送则发送。不使用多进程时,我们首先判断是否发送邮件,如果需要则发送;然后再判断是否需要发送短信,如…

C#中的interface

接口(interface) 接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式。 接口实际上是一个约定: 如&…

网易不进垃圾箱html,腾讯QQ、网易126、163邮箱发送邮件进入垃圾箱及收不到邮件怎么办?...

近期有用户反馈在云奇付(www.361ser.com)会员中心通过腾讯QQ邮箱、网易126、163邮箱绑定账号及安全验证无法正常收取或收不到云奇付发送的邮件怎么办?其实这是因为QQ邮箱、126邮箱、163邮箱等其它邮箱都有反垃圾邮件机制,很多企业网站的邮件都被误拦截到…

java技术分享主题_Java开发入门:适合新手练手的Java项目(附源码下载)

Java作为一门古老的语言,已有20年左右的历史,这在发展日新月异的技术圈可以说是一个神话。虽然不少人曾抱怨Java语言就像老太太的裹脚布,又臭又长,有时写了500行都不能表达程序员的意图。但从市场上的招聘现状看,Java工…

uni app 调用网络打印机_uni-app 的使用体验总结

[实践] uni-app 的使用总结最近使用 uni-app 的感受。使用体验没用之前以为真和 Vue 一样,用了之后才知道。有点类似 Vue 和 小程序结合的感觉。写类似小程序的标签,有着小程序和 Vue 的生命周期钩子。对比 uni-app 文档和微信小程序的文档,不…

html 微信发送给朋友,H5链接分享给微信好友,显示标题、描述、缩略图

效果展示image.png1.公众号设置1.1公众号需要经过认证,具有分享接口功能image.png1.2填写正确的域名(域名需要经过备案)image.png1.3 保存好AppID、AppSecret、设置好ip白名单(非常重要)image.png2.php代码(需要有php环境下,放到域名目录下)2.1展示下目录…

python怎么创建变量_python怎么创建变量

变量(variable)是学习python初始时,就会接触到的一个新的知识点,也是一个需要熟知的概念。python是一种动态类型语言,在赋值的执行中可以绑定不同类型的值,这个过程叫做变量赋值操作,赋值同时确定了变量类型。在python…

nginx 学习笔记【持续更新...】

1.如果在安装过程中出现以下错误 需要安装pcre库 解决方案:yum install pcre 2.如果nginx启动提示端口被占用,则停止该端口的服务再启动nginx,一般为httpd服务 解决方案:service httpd stop 3.nginx下php编译 ./configure --prefix/usr/local/fastphp …

python怎么放音乐_python怎么播放音乐

Python播放音乐要使用pygame模块 首先安装pygame模块:pip install pygame 方法实现:def play_music(self): filepath r"E:\music\消愁.mp3"; pygame.mixer.init() # 加载音乐 pygame.mixer.music.load(filepath) pygame.mixer.music.play(sta…

怎么用计算机打分数,电脑excel中分数怎么打出来(图解excel分数输入法)

在日常工作中,我们经常需要在excel中输入分数,默认情况下,当我们直接输入分数,比如输入“9/16” 回车后,会发现系统显示的却是日期数据,如下图所示,那么分数该怎么输入呢?今天就来和…

word 7桌面上的计算机图标是,怎么设置win7系统桌面图标都变成word图标的处理办法...

随着电脑的使用率越来越高,我们有时候可能会遇到win7系统桌面图标都变成word图标问题,如果我们遇到了win7系统桌面图标都变成word图标的问题,要怎么处理win7系统桌面图标都变成word图标呢?我们只用  双击打开桌面上的计算机文件…

python3文件的编码类型是什么_python3.x - 怎么查看某个文件的编码方式?python

问 题 python的确很赞,但是编码这个问题真的太尿性了。。。 现在我有一个文件,不论他的编码方式是什么,我都想把它转化成utf-8的格式。我的想法是先读取文件内容,保存到data变量中去,然后再以utf-8的格式写入文件。 但…

python源码剖析_Python源码剖析 - 对象初探

01 前言 对象是 python 中最核心的一个概念,在python的世界中,一切都是对象,整数、字符串、甚至类型、整数类型、字符串类型,都是对象。 02 什么是PyObject Python 中凡事皆对象,而其中 PyObject 又是所有对象的基础&a…

html点线面制作,利用HTML5绘制点线面组成的3D图形的示例

玩Canvas玩了有两三个礼拜了,平面的东西玩来玩去也就那样,所以就开始折腾3D了。因为Canvas画布终究还是平面的,所以要有3D就得抽象出一个Z轴。然后再把3D坐标转换成2D坐标,画到画布上,再通过旋转等变换效果来产生3D感。…

javapanel根据内部组件_[译]避免在unmounted组件上调用setState

[译]避免在unmounted组件上调用setState原文 : https://www.robinwieruch.de/react-warning-cant-call-setstate-on-an-unmounted-component很多人在开发 React 的过程中,会遇到下面这些警告。github上很多issue都和这些警告相关。因此,我想在这篇文章里…

如何写一个脚本语言_零基础小白如何学会写文案?文案写作技巧之一:如何写一个吸引读者的文案开头...

我文笔不好怎样才能够写出优质的文案?很多人都有这个疑问,包括我自己在学习新媒体运营之前,这也是我最大的困惑。现在是内容为王的时代,你的文章质量决定了你的KPI。后来我学习了文章的写作结构和技巧后,就能够写出一篇…