真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql后臺怎么用 mysql使用

nodejs怎么后臺操作mysql

連接流程代碼如下:

創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網(wǎng)站制作、成都網(wǎng)站設計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的南康網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!

var mysql ?= require('mysql'); ?//調(diào)用MySQL模塊//創(chuàng)建一個connectionvar connection = mysql.createConnection({ ? ?

host ? ? : '127.0.0.1', ? ? ? //主機

user ? ? : 'root', ? ? ? ? ? ?//MySQL認證用戶名

password:'12345',

port: ? '3306',

database: 'node'});//創(chuàng)建一個connectionconnection.connect(function(err){

if(err){ ? ? ?

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

}

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

});

//執(zhí)行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!');

});12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455

關于Connection Optionos

要想創(chuàng)建一個數(shù)據(jù)庫連接,先就要認識清楚Options

host:主機地址 (默認:localhost)

user:用戶名

password:密碼

port:端口號 (默認:3306)

database:數(shù)據(jù)庫名

charset:連接字符集(默認:’UTF8_GENERAL_CI’,注意字符集的字母都要大寫)

localAddress:此IP用于TCP連接(可選)

socketPath:連接到unix域路徑,當使用 host 和 port 時會被忽略

timezone:時區(qū)(默認:’local’)

connectTimeout:連接超時(默認:不限制;單位:毫秒)

stringifyObjects:是否序列化對象(默認:’false’ ;與安全相關)

typeCast:是否將列值轉(zhuǎn)化為本地JavaScript類型值 (默認:true)

queryFormat:自定義query語句格式化方法?

supportBigNumbers:數(shù)據(jù)庫支持bigint或decimal類型列時,需要設此option為true (默認:false)

bigNumberStrings:supportBigNumbers和bigNumberStrings啟用 強制bigint或decimal列以JavaScript字符串類型返回(默認:false)

dateStrings:強制timestamp,datetime,data類型以字符串類型返回,而不是JavaScript Date類型(默認:false)

debug:開啟調(diào)試(默認:false)

multipleStatements:是否許一個query中有多個MySQL語句 (默認:false)

flags:用于修改連接標志,更多詳情:

ssl:使用ssl參數(shù)(與crypto.createCredenitals參數(shù)格式一至)或一個包含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();12345678910111213141516171819202122232425

刪除

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

查找

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\t%s',results[i].name,results[i].end_time);

}

}

});

connection.end();12345678910111213141516171819202122232425

修改

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

結(jié)束連接其實有兩種方法end(),destory();

end()?

end()方法在queries都結(jié)束后執(zhí)行,end()方法接收一個回調(diào)函數(shù),queries執(zhí)行出錯,仍然后結(jié)束連接,錯誤會返回給回調(diào)函數(shù)err參數(shù),可以在回調(diào)函數(shù)中處理!

destory()?

比較暴力,沒有回調(diào)函數(shù),即刻執(zhí)行,不管queries是否完成!

使用連接池

在數(shù)據(jù)庫中執(zhí)行如下代碼創(chuàng)建一個存儲過程

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 ;12345678910111213141516171819202122232425262728293031323334

調(diào)用示例:

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

host: '127.0.0.1', ? ?

user: 'root',

password:'12345',

port:'3306',

database:'node'});//監(jiān)聽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\t%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;');123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

1.連接池的創(chuàng)建,使用createPool方法,options和createConntion一致;?

2.其它連接池配置選項 

waitForConnections

當連接池沒有連接或超出最大限制時,設置為true且會把連接放入隊列,設置為false會返回error

connectionLimit?

連接數(shù)限制,默認: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();12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455

首先關閉mysql服務,然后執(zhí)行程序,會一直打印斷線重連,當再次開啟mysql服務后,打印連接成功。

防止SQL注入

可以使用pool.escape()和connect.escape(),示例代碼:

var mysql = require('mysql');var pool = mysql.createPool({

host: '127.0.0.1', ? ?

user: 'root',

password:'12345',

port:'3306',

database:'node'});function myQuery(sql){

pool.getConnection(function(err,connection){

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

? ? ?//console.log(err);

? ? ?console.log(result);

? ? ?connection.release();

?}); ? ? ? ?// connection.query('SELECT * FROM userinfo WHERE id = ' + pool.escape('5 OR ID = 6') ,function(err,result){

?// //console.log(err);

?// console.log(result);

?// connection.release();

?// });

});

}

myQuery('SELECT * FROM seckill WHERE seckill_id = ' + '1006 OR seckill_id = 1007');

myQuery('SELECT * FROM seckill WHERE seckill_id = ' + pool.escape('1006 OR seckill_id = 1007'));123456789101112131415161718192021222324252627282930313233343536373839404142434445464748

結(jié)果可以看出,第1個query拼接條件可以被執(zhí)行,而通過escape方法轉(zhuǎn)義后的忽略了后面的拼接的部分!

遇到的問題

編碼導致的問題?

1366 (HY000): Incorrect string value: ‘\xC3\xEB\xC9\xB1’ for column ‘ExtName’ at row 1?

字符編碼沒有統(tǒng)一的問題,查看數(shù)據(jù)庫的編碼方式命令為:?

mysql show variables like ‘character%’;?

從以上信息可知數(shù)據(jù)庫的編碼為latin1,需要修改為gbk或者是utf8;

如何后臺運行mysql腳本

使用如下語句:

sprintf(sqlstring,"source /home/lijian/copydata.sql");

if(mysql_query(mysql,sqlstring))

{

fprintf(logfile,"error %s:%s\n",sqlstring,mysql_error(mysql));

return 1;

}

知道m(xù)ysql賬號和密碼,怎樣進入后臺?

首先得看一下你的電腦里是否裝有Mysql.如果有的話可以直接在DOS命令行里輸入查看有關信息

具體方法

加載Mysql mysqld -install

啟動Mysql net start mysql

登陸Mysql mysql -u 主機名 -r 用戶名 -p 密碼

不建議使用此方法.因為即使你登陸上去后查看有關數(shù)據(jù)庫信息可視化不強.不易操作.

當然如果你MYSQL客戶端工具,就更加簡單了.建議使用NAVICAT如果沒有可以下一個.使用非常方便..打開客戶端工具.在連接管理處,輸入你的主機名.用戶名.密碼即可以連接成功

如果還不明白還以再問我.


文章標題:mysql后臺怎么用 mysql使用
網(wǎng)站URL:http://weahome.cn/article/docpodp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部