当前位置:首页 » 操作系统 » nodejs的数据库操作

nodejs的数据库操作

发布时间: 2022-07-27 03:10:01

1. nodejs怎么连接数据库

在node中输入npm install mysql(注意安装路径)
电脑必须安装mysql数据库(这是前提),创建一个数据库,建立一个表,本教程中用的是nodesmaple,表名是t_user
新建a.js代码:
[javascript] view plain
var mysql = require('mysql');
var conn = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'nodesmaple',
port: 3306
});
conn.connect();
conn.query('SELECT 1 + 1 AS solution',
function(err, rows, fields) {
if (err) throw err;
console.log('The solution is: ', rows[0].solution)
});
conn.end();
运行a.js node a.js 完成,ok!

2. nodejs数据库怎么都用

1、node_moles只是放一些依赖包,具体数据库文件当然是放在mysql目录下了。 2、要在不开编辑器前提下,使系统可访问,你只要在控制台中定位到你系统的目录后,使用node命令来启动即可

3. nodejs怎么连接数据库mysql

var mysql = require('mysql');
var conn = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database:'nodejs',
port: 3306
});
conn.connect();

//查询
// conn.query('SELECT * from user where name="wangwei"', function(err, result) {
// if (err) throw err;
// console.log(result);
// })

//新增
// conn.query('insert into user (username,password) values("huxiaona","123456")', function(err, result) {
// if (err) throw err;
// console.log(result);
// })

//删除
// conn.query('delete from user where username="wupeigui"', function(err, result) {
// if (err) throw err;
// console.log(result);
// })

conn.query('update user set id="1" where username="huxiaona"',function(err,result){
if (err) {throw err};
console.log("修改数据成功");
})

conn.end();

4. 如何在node.js里连接和使用mysql

通常在NodeJS开发中我们经常涉及到操作数据库,尤其是 MySQL ,作为应用最为广泛的开源数据库则成为我们的首选,本篇就来介绍下如何通过NodeJS来操作 MySQL 数据库。 安装MySQL模块到NodeJS中 我们需要让NodeJS支持MySQL,则需要将MySQL模块添加到系统支持库

想要快速了解Node.js ,赞生推荐亲看看 node.js_guide.pdf — node.js 开发指南 :想要电子版高清的 留言发送

如果不想留言 可以带你做飞机! 直接下载

Node.js
简单介绍一下node.js的操作吧
安装 node-mysql
$ npm install mysql
创建测试表
//数据库名 NodeSampleCREATE TABLE `NodeSample`.`MyTable` (

`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`firstname` VARCHAR( 20 ) NOT NULL ,
`lastname` VARCHAR( 20 ) NOT NULL ,
`message` TEXT NOT NULL
) ENGINE = MYISAM ;

连接数据库
Js代码

var sys = require('sys');

var Client = require('mysql').Client;
var client = new Client();

client.user = 'someuser';
client.password = 'password';

client.connect(function(error, results) {
if(error) {
console.log('Connection Error: ' + error.message);
return;
}
console.log('Connected to MySQL');
});

5. nodejs简单访问及操作mysql数据库的方法示例

本文实例讲述了nodejs简单访问及操作mysql数据库的方法。分享给大家供大家参考,具体如下:
var
mysql
=
require('mysql');
//调用MySQL模块
mysql模块要安装
$
npm
install
mysql
//创建一个connection
var
connection
=
mysql.createConnection({
host
:
'127.0.0.1',
//主机
user
:
'root',
//MySQL认证用户名
password
:
'',
//MySQL认证用户密码
port:
'3306',
//端口号
database:''
//数据库名
});
//创建一个connection
connection.connect(function(err){
if(err){
console.log('[query]
-
:'+err);
return;
}
console.log('[connection
connect]
succeed!');
});
//执行SQL语句
connection.query('SELECT
1
+
1
AS
solution',
function(err,
rows,
fields)
{
if
(err)
{
console.log('[query]
-
:'+err);
return;
}
console.log('The
solution
is:
',
rows[0].solution);
});
//关闭connection
connection.end(function(err){
if(err){
return;
}
console.log('[connection
end]
succeed!');
});
注:nodejs在操作数据库的时候不用设置数据库的编码格式
set
names
utf8
希望本文所述对大家nodejs程序设计有所帮助。
您可能感兴趣的文章:nodejs连接mysql数据库简单封装示例-mysql模块nodejs进阶(6)—连接MySQL数据库示例nodejs实现的连接MySQL数据库功能示例Nodejs连接mysql并实现增、删、改、查操作的方法详解nodeJs实现基于连接池连接mysql的方法示例nodejs中操作mysql数据库示例NodeJS链接MySql数据库的操作方法Nodejs使用mysql模块之获得更新和删除影响的行数的方法NodeJs使用Mysql模块实现事务处理实例nodejs连接mysql数据库及基本知识点详解

6. nodejs安装数据库之后怎么使用

项目中需要使用mysql数据库,下面就介绍下怎么访问mysql

这里我使用的mac进行开发的,首先需要下载mysql

地址:http://dev.mysql.com/downloads/mysql/

参考这篇安装http://dev.mysql.com/doc/refman/5.0/en/macosx-installation.html

安装完成后可以在偏好设置里面看到mysql,通过这个可以启动关闭mysql。

默认安装完成后,数据库的root用户是没有密码的。

为了方便操作,这里我又安装了一个mysql的图形化操作工具sequelpro
下载地址:http://www.sequelpro.com/download/

安装成功并且登陆后的界面如下图所示:

以root登录后可以给root用户加上密码。

上面是对php/mysql%B0%B2%D7%B0/" target="_blank">mysql安装进行了简单的介绍。下面介绍下怎样使用nodejs访问mysql

创建express项目,这里我使用的db-mysql

官方网址:http://nodejsdb.org/db-mysql/

根据它上面的介绍

在这之前需要在命令行中运行下面这个命令:

代码如下
复制代码

export MYSQL_CONFIG=/usr/local/mysql/bin/mysql_config

然后安装db-mysql

代码如下
复制代码

npm install db-mysql

然后编写一个js文件,这里我参考官方例子,自己写了一个读取mysql中的test数据库中user表中的数据:

代码:

代码如下
复制代码

var mysql = require(‘db-mysql’);
new mysql.Database({
hostname: ‘localhost’,
user: ‘root’,
password: ‘password’,
database: ‘test’
}).connect(function(error) {
if (error) {
return console.log(‘CONNECTION error: ‘ + error);
}
this.query().
php/select/" target="_blank">select(‘*’).
from(‘user’).
execute(function(error, rows, cols) {
if (error) {
console.log(‘ERROR: ‘ + error);
return;
}
for(var i=0;i<rows.length;i++){
console.log(rows[i].name );
}

});
});

很简单,然后我用行这个js,但是出现了问题:

throw e; // process.nextTick error, or ‘error’ event on first tick
^
Error: Unable to load shared library /Users/wanzhang/WebstormProjects/ReadMysql/node_moles/db-

代码如下
复制代码

mysql/build/Release/mysql_bindings.node
at Object..node (mole.js:472:11)
at Mole.load (mole.js:348:31)
at Function._load (mole.js:308:12)
at Mole.require (mole.js:354:17)
at require (mole.js:370:17)
at Object.<anonymous> (/Users/wanzhang/WebstormProjects/ReadMysql/node_moles/db-mysql/db-mysql.js:18:15)
at Mole._compile (mole.js:441:26)
at Object..js (mole.js:459:10)
at Mole.load (mole.js:348:31)
at Function._load (mole.js:308:12)

解决方法:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/

然后再运行这个js文件,ok,会打印出表中数据。

上面就是nodejs访问mysql一个简单例子。

7. nodejs能操作数据库吗

可以。
安装mysql的方法:
npm install mysql
安装mongodb的方法
npm install mongodb --save

8. nodejs怎么后台操作mysql

连接流程代码如下:

var mysql = require('mysql'); //调用MySQL模块//创建一个connectionvar connection = mysql.createConnection({

host : '127.0.0.1', //主机
user : 'root', //MySQL认证用户名
password:'12345',
port: '3306',
database: 'node'});//创建一个connectionconnection.connect(function(err){

if(err){

console.log('[query] - :'+err); return;

}

console.log('[connection connect] succeed!');

});

//执行SQL语句connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {

if (err) {

console.log('[query] - :'+err); return;

}

console.log('The solution is: ', rows[0].solution);

});

//关闭connectionconnection.end(function(err){

if(err){

return;

}

console.log('[connection end] succeed!');

});

关于Connection Optionos

要想创建一个数据库连接,先就要认识清楚Options

host:主机地址 (默认:localhost)

user:用户名

password:密码

port:端口号 (默认:3306)

database:数据库名

charset:连接字符集(默认:’UTF8_GENERAL_CI’,注意字符集的字母都要大写)

localAddress:此IP用于TCP连接(可选)

socketPath:连接到unix域路径,当使用 host 和 port 时会被忽略

timezone:时区(默认:’local’)

connectTimeout:连接超时(默认:不限制;单位:毫秒)

stringifyObjects:是否序列化对象(默认:’false’ ;与安全相关https://github.com/felixge/node-mysql/issues/501)

typeCast:是否将列值转化为本地JavaScript类型值 (默认:true)

queryFormat:自定义query语句格式化方法https://github.com/felixge/node-mysql#custom-format

supportBigNumbers:数据库支持bigint或decimal类型列时,需要设此option为true (默认:false)

bigNumberStrings:supportBigNumbers和bigNumberStrings启用 强制bigint或decimal列以JavaScript字符串类型返回(默认:false)

dateStrings:强制timestamp,datetime,data类型以字符串类型返回,而不是JavaScript Date类型(默认:false)

debug:开启调试(默认:false)

multipleStatements:是否许一个query中有多个MySQL语句 (默认:false)

flags:用于修改连接标志,更多详情:https://github.com/felixge/node-mysql#connection-flags

ssl:使用ssl参数(与crypto.createCredenitals参数格式一至)或一个包含ssl配置文件名称的字符串,目前只捆绑Amazon RDS的配置文件

其它:

可以使用URL形式的加接字符串,不多介绍了,不太喜欢那种格式,觉得可读性差,也易出错,想了解的可以去主页上看。

MYSQL CURD操作

增加

var mysql = require('mysql');var DATABASE = "seckill";var TABLE="seckill"var connection = mysql.createConnection({
host:'127.0.0.1',
user:'root',
password:'12345',
port:'3306',
database: DATABASE
});

connection.connect();var addVip = 'insert into seckill(name,number) values(?,?)';var param = ['100元秒杀家教机',100];
connection.query(addVip, param, function(error, result){
if(error)
{
console.log(error.message);
}else{
console.log('insert id: '+result.insertId);
}
});

connection.end();

删除

var mysql = require('mysql');var DATABASE = "node";var TABLE="seckill"var connection = mysql.createConnection({
host:'127.0.0.1',
user:'root',
password:'12345',
port:'3306',
database: DATABASE
});

connection.connect();var addVip = 'delete from seckill where seckill_id = 1005';
connection.query(addVip, function(error, result){
if(error)
{
console.log(error.message);
}else{
console.log('affectedRows: '+result.affectedRows);
}
});

connection.end();

查找

var mysql = require("mysql");var DATABASE = "node";var TABLE="seckill"var connection = mysql.createConnection({
host:'127.0.0.1',
user:'root',
password:'12345',
port:'3306',
});

connection.connect();
connection.query('use '+DATABASE);
connection.query('select * from '+TABLE, function(error, results, fields){
if (error) { throw error;
} if (results) { for(var i = 0; i < results.length; i++)
{
console.log('%s %s',results[i].name,results[i].end_time);
}
}
});

connection.end();

修改

var mysql = require('mysql');var DATABASE = "seckill";var connection = mysql.createConnection({
host:'127.0.0.1',
user:'root',
password:'12345',
port:'3306',
database: DATABASE
});
connection.connect();var userSql = "update seckill set number = number-1 where seckill_id = ?";var param = [1000, 2];
connection.query(userSql, param, function (error, result) {
if(error)
{
console.log(error.message);
}else{
console.log('affectedRows: '+result.affectedRows);
}
});
connection.end();

结束连接其实有两种方法end(),destory();

  • end()
    end()方法在queries都结束后执行,end()方法接收一个回调函数,queries执行出错,仍然后结束连接,错误会返回给回调函数err参数,可以在回调函数中处理!

  • destory()
    比较暴力,没有回调函数,即刻执行,不管queries是否完成!

  • 使用连接池

    在数据库中执行如下代码创建一个存储过程

  • DROP PROCEDURE IF EXISTS `P_SeckillInfo`;DELIMITER ;;CREATE DEFINER=`root`@`localhost` PROCEDURE `P_SeckillInfo`(IN ExtName VARCHAR(120),IN ExtNumber INT(11),OUT ExtReturnVal INT)


  • TOP: BEGIN


  • DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN


  • ROLLBACK;


  • SET ExtReturnVal = 0; -- Failed


  • END;


  • START TRANSACTION;


  • INSERT INTO seckill(name, number) VALUES(ExtName,ExtNumber);


  • SET ExtReturnVal = 1;


  • SELECT ExtReturnVal;


  • COMMIT;END;;


  • DELIMITER ;262728293031323334

  • 调用示例:

  • var mysql = require("mysql");var pool = mysql.createPool({

  • host: '127.0.0.1',


  • user: 'root',


  • password:'12345',


  • port:'3306',


  • database:'node'});//监听connection事件pool.on('connection', function(connection) {


  • connection.query('select * from seckill', function(error, results, fields){

  • if (error) { throw error;

  • } if (results) { for(var i = 0; i < results.length; i++)

  • {

  • console.log('%s %s',results[i].name,results[i].end_time);

  • }

  • }

  • });


  • });//连接池可以直接使用,也可以共享一个连接或管理多个连接(引用官方示例)//直接使用pool.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {


  • if (err) throw err;


  • console.log('The solution is: ', rows[0].solution);


  • });//共享连接function myQuery(sql){

  • pool.getConnection(function(err, connection) {


  • connection.query(sql, function(err, result) {


  • console.log(result); //释放连接

  • connection.release();


  • }); //Error: Connection already released,应该每次到连接池中再次获取

  • // connection.query( 'SELECT * FROM seckill;', function(err, result) {



  • // console.log(result);


  • // connection.release();


  • // });


  • });

  • }


  • myQuery('SELECT * FROM seckill;');

  • myQuery('SELECT * FROM seckill;');

  • 1.连接池的创建,使用createPool方法,options和createConntion一致;
    2.其它连接池配置选项

  • waitForConnections

  • 当连接池没有连接或超出最大限制时,设置为true且会把连接放入队列,设置为false会返回error

  • connectionLimit
    连接数限制,默认:10

  • queueLimit
    最大连接请求队列限制,设置为0表示不限制,默认:0

  • 断开重连

    示例代码:

  • var mysql = require('mysql');var db_config = {


  • host: '127.0.0.1',


  • user: 'root',


  • password:'12345',


  • port:'3306',


  • database:'node'};var connection;function handleDisconnect() {


  • connection = mysql.createConnection(db_config);


  • connection.connect(function(err) {


  • if(err) {


  • console.log('进行断线重连:' + new Date());


  • setTimeout(handleDisconnect, 2000); //2秒重连一次

  • return;


  • }


  • console.log('连接成功');


  • });


  • connection.on('error', function(err) {


  • console.log('db error', err); if(err.code === 'PROTOCOL_CONNECTION_LOST') {


  • handleDisconnect();


  • } else {

  • throw err;

  • }


  • });


  • }


  • handleDisconnect();

  • 首先关闭mysql服务,然后执行程序,会一直打印断线重连,当再次开启mysql服务后,打印连接成功。

9. node.js怎么把数据存入数据库

nodejs数据存mongodb:
首先创建数据库保存用户信息
数据库创建名 users 集合并插入条用户信息前没 users 集合mongodb 直接创建
> db.users.insert( { "userId":1, "name":"tom", "email":"[email protected]" })
查找信息使用 find 或者 findOne区别于 findOne 返结
db.users.findOne( {"userId": 1})
返结:
{
"_id" : ObjectId("5413be6e9e1c9f9c4386756d"),
"userId" : 1,
"name" : "tom",
"email" : "[email protected]"
}
驱程序
编辑 package.json, 添加于 mongodb 引用
{
"name": "express-api",
"version": "0.0.1",
"dependencies": {
"express": "2.5.9",
"ejs": "0.4.2",
"mongodb": "1.4.1"
}
}
重新 npm install 安装 mongodb 驱
使用 MongoDB 数据库
修改代码首先 require mongodb 模块连接 mongodb 数据库
var mongo = require("mongodb");
var express = require("express");
var app = express.createServer();
app.set("view engine", "ejs");
app.set("views", __dirname + "/views");
app.set("view options", { layout: false });
app.get("/", function (request, response) {
response.render("index");
});
app.get("/user/:id", function (request, response) {
var id = request.params.id;
console.log(id);
app.users.findOne({ "userId": +id }, function (error, doc) {
if (error) return next(error);
response.json(doc);
});
});
// connect mongodb
var server = new mongo.Server("127.0.0.1", 27017);
var db = new mongo.Db("members", server, {safe:true }).open(function (error, client) {
if (error) throw error;
console.log("\033[96m + \033[39m connected to mongodb");
app.users = new mongo.Collection(client, "users");
client.ensureIndex("users", "userId", function (error) {
if (error) throw error;
console.log("\033[96m + \033[39m ensured index.");
console.log("Web Server listening ......");
app.listen(3000);
});
});
注意现数据库查找用户id 前面 + 用表单字符串类型数据转换需要数字类型
app.users.findOne({ "userId": +id }, function (error, doc) {
if (error) return next(error);
response.json(doc);
});

10. nodejs如何判断数据库操作是否执行完毕

判断如下:
将运行结果用arr.length来判断,如果arr.length不像我们期望的那样,比如由于网络传输或者处理异常,少一条,那么我们将无法做后续的处理。这种处理方式强业务耦合;不具有普适性。taskWatcher 充当异步任务执行情况的观察员,仅与异步过程的调用次数有关,且与其他处理过程无关。方法返回一个 Promise, 它将在上述可迭代对象中的所有 Promise 被 resolve 之后被 resolve,或者在任一 Promise 被 reject 后被 reject。

热点内容
微信上的电影怎么下载或缓存 发布:2025-01-19 14:30:57 浏览:826
如何在外网访问服务器 发布:2025-01-19 14:29:45 浏览:380
百度重定向脚本 发布:2025-01-19 14:29:36 浏览:428
php怎么反编译 发布:2025-01-19 14:10:54 浏览:590
加密货币交易平台排名 发布:2025-01-19 13:58:21 浏览:741
红绿灯的编程 发布:2025-01-19 13:57:37 浏览:113
老男孩linux教程 发布:2025-01-19 13:44:48 浏览:941
买车怎么区分车配置 发布:2025-01-19 13:44:45 浏览:242
丢失缓存视频 发布:2025-01-19 13:44:09 浏览:183
C语言tp 发布:2025-01-19 13:26:20 浏览:107