當前位置:首頁 » 操作系統 » 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。

熱點內容
python控制台亂碼 發布:2025-01-19 10:55:38 瀏覽:363
安卓鴻蒙蘋果哪個好用 發布:2025-01-19 10:32:33 瀏覽:264
正規物業保安怎麼配置 發布:2025-01-19 10:27:30 瀏覽:518
斷裂下載ftp 發布:2025-01-19 10:27:30 瀏覽:641
安卓導航怎麼調對比度 發布:2025-01-19 10:26:52 瀏覽:25
伺服器共享文件如何查看訪問記錄 發布:2025-01-19 10:08:55 瀏覽:400
datasourceSQL 發布:2025-01-19 10:01:25 瀏覽:838
aspnet網站的編譯 發布:2025-01-19 10:00:49 瀏覽:334
路特仕A9工廠密碼是多少 發布:2025-01-19 09:59:44 瀏覽:257
linux的命令find 發布:2025-01-19 09:42:55 瀏覽:174