node.js连接GBase 8a 数据库 并进行查询代码示例

简介: node.js连接GBase 8a 数据库 并进行查询代码示例

1.背景:
node.js是一款流行的运行在服务端的 JavaScript,使用JavaScript语言进行编程,快速实现一些简单web服务等功能。

2.连接GBase代码示例:
使用node.js前先进行环境安装,化简安装步骤如下:

先从node.js网站上下载node.js安装包,本例中安装包为,也可以从https://nodejs.org/zh-cn/download/prebuilt-binaries地址上手动下载

wget https://nodejs.org/dist/v22.11.0/node-v22.11.0-linux-x64.tar.xz // 下载
tar -xvf node-v10.9.0-linux-x64.tar.xz // 解压
cd node-v10.9.0-linux-x64/ // 进入解压目录
./bin/node -v // 执行node命令 查看版本

解压文件的 bin 目录底下包含了 node、npm 等命令,我们可以使用 ln 命令来设置软连接:

ln -s /usr/software/nodejs/bin/npm /usr/local/bin/
ln -s /usr/software/nodejs/bin/node /usr/local/bin/
以下为一段node.js连接gbase8a的代码示例,注意由于目前8a还么有javascript的连接驱动程序,因此需要使用mysql的连接驱动package来进行连接,本例中使用了express和mysql这两个package,需要提前进行安装,具体安装指令示例如下:

创建代码目录:

mkdir test
cd test
npm install express --save //下载方式安装express package
npm install mysql --save //下载方式安装mysql package

完成后会在创建的test目录下生成node_modules目录内部包括下载的全部package和其依赖package,并生成package.json,package-lock.json两个文件作为下载package的描述信息

以下为连接gbase8a进行简单查询的示例代码:

其中gbase8a中的test.t1表结构如下:

CREATE TABLE "t1" (
"a" int(11) DEFAULT NULL,
"b" int(11) DEFAULT NULL,
"c" int(11) DEFAULT NULL
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'
具体node.js代码test.js文件内容如下:

const express = require('express');
const mysql = require('mysql');
const util = require('util');
const bodyParser = require('body-parser');

// Promisify the mysql query method for a given connection
const promisifyQuery = (connection) => {
const query = util.promisify(connection.query).bind(connection);
return query;
};

const app = express();
const myport = 3000;

app.use(bodyParser.json());

app.post('/connect', async (req, res) => {
const { host, user, password, database, port } = req.body;

if (!host || !user || !password || !database || !port) {
return res.status(400).json({ error: 'Missing required connection parameters' });
}

const connectionConfig = {
host: host,
user: user,
password: password,
database: database,
port: port
};

let connection;

try {
connection = mysql.createConnection(connectionConfig);

// Execute the SQL query
connection.query('SELECT a, b, c FROM t1 limit 10', function (error, results, fields) {
  if(error){
      console.log('[SELECT ERROR] - ',error.message);
      return;
   }

   console.log('--------------------------SELECT----------------------------');
   console.log(results);
   console.log('------------------------------------------------------------\n\n');
   res.json({results});
});

} catch (error) {
// Handle database connection or query errors
console.error('Database error:', error);
res.status(500).json({ error: 'Database connection or query failed', message: error.message });
} finally {
// Ensure the database connection is closed
if (connection) {
connection.end();
}
}
});

app.listen(myport, () => {
console.log(Server is running on http://localhost:${myport});
});

3.调用和执行效果:
运行test.js javascript

[gbase@kylin10danji test]$ node test1.js
Server is running on http://localhost:3000
使用curl工具发送post请求给服务端口:

[gbase@kylin10danji gbase]$ curl -X POST http://localhost:3000/connect -H "Content-Type: application/json" -d '{"host":"192.168.56.161","user":"gbase","password":"gbase20110531","database":"test","port":"5258"}'
test.js服务端打屏显示:

[gbase@kylin10danji test]$ node test1.js
Server is running on http://localhost:3000
--------------------------SELECT----------------------------
[
RowDataPacket { a: 1, b: 2, c: 3 },
RowDataPacket { a: 1, b: 3, c: 6 },
RowDataPacket { a: 1, b: 5, c: 6 },
RowDataPacket { a: 2, b: 2, c: 3 },
RowDataPacket { a: 2, b: 3, c: 6 },
RowDataPacket { a: 2, b: 5, c: 6 },
RowDataPacket { a: 1, b: 2, c: 3 },
RowDataPacket { a: 1, b: 3, c: 6 },
RowDataPacket { a: 1, b: 5, c: 6 },
RowDataPacket { a: 2, b: 2, c: 3 }

]

返回curl客户端信息:

[gbase@kylin10danji gbase]$ curl -X POST http://localhost:3000/connect -H "Content-Type: application/json" -d '{"host":"192.168.56.161","user":"gbase","password":"gbase20110531","database":"test","port":"5258"}'
{"results":[{"a":1,"b":2,"c":3},{"a":1,"b":3,"c":6},{"a":1,"b":5,"c":6},{"a":2,"b":2,"c":3},{"a":2,"b":3,"c":6},{"

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
1142 77
|
JavaScript 前端开发 安全
【逆向】Python 调用 JS 代码实战:使用 pyexecjs 与 Node.js 无缝衔接
本文介绍了如何使用 Python 的轻量级库 `pyexecjs` 调用 JavaScript 代码,并结合 Node.js 实现完整的执行流程。内容涵盖环境搭建、基本使用、常见问题解决方案及爬虫逆向分析中的实战技巧,帮助开发者在 Python 中高效处理 JS 逻辑。
|
JavaScript 前端开发 算法
流量分发代码实战|学会用JS控制用户访问路径
流量分发工具(Traffic Distributor),又称跳转器或负载均衡器,可通过JavaScript按预设规则将用户随机引导至不同网站,适用于SEO优化、广告投放、A/B测试等场景。本文分享一段不到百行的JS代码,实现智能、隐蔽的流量控制,并附完整示例与算法解析。
506 1
|
人工智能 搜索推荐 API
node-DeepResearch:开源复现版OpenAI Deep Research,支持多步推理和复杂查询的AI智能体
node-DeepResearch 是一个开源 AI 智能体项目,支持多步推理和复杂查询,帮助用户逐步解决问题。
1622 27
node-DeepResearch:开源复现版OpenAI Deep Research,支持多步推理和复杂查询的AI智能体
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
670 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
存储 JavaScript 前端开发
在NodeJS中使用npm包进行JS代码的混淆加密
总的来说,使用“javascript-obfuscator”包可以帮助我们在Node.js中轻松地混淆JavaScript代码。通过合理的配置,我们可以使混淆后的代码更难以理解,从而提高代码的保密性。
1592 9
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
1564 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
1021 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
前端开发 JavaScript
【Javascript系列】Terser除了压缩代码之外,还有优化代码的功能
Terser 是一款广泛应用于前端开发的 JavaScript 解析器和压缩工具,常被视为 Uglify-es 的替代品。它不仅能高效压缩代码体积,还能优化代码逻辑,提升可靠性。例如,在调试中发现,Terser 压缩后的代码对删除功能确认框逻辑进行了优化。常用参数包括 `compress`(启用压缩)、`mangle`(变量名混淆)和 `output`(输出配置)。更多高级用法可参考官方文档。
1175 11
|
JavaScript
JS代码的一些常用优化写法
JS代码的一些常用优化写法
281 0