怎样实现node连接mysql的方法

怎样实现node连接mysql的方法,第1张

安装

$ npm install mysql

有关之前的0.9.x版本的信息, 请访问 v0.9分支。

有时我还会要求你从Github安装最新版以检查bug是否已修复。在这种情况下,请输入:

$ npm install mysqljs/mysql

引言

这是node.js的mysql驱动。它是用JavaScript编写的,不需要编译,完全遵循MIT许可协议。

下面是一个如何使用它的例子:

var mysql = require('mysql')

var connection = mysql.createConnection({

host : 'localhost',

user : 'me',

password : 'secret',

database : 'my_db'

})

connection.connect()

connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {

if (err) throw err

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

})

connection.end()

从这个例子中,你可以了解到以下几点:

对于一个连接,你所调用的每个方法都是按顺序排队并依次执行的。

使用end()关闭连接,以确保给mysql服务器发送退出(quit)包以前执行所有剩余的查询。

推荐的建立链接的一个方法:

var mysql = require('mysql')

var connection = mysql.createConnection({

host : 'example.org',

user : 'bob',

password : 'secret'

})

connection.connect(function(err) {

if (err) {

console.error('error connecting: ' + err.stack)

return

}

console.log('connected as id ' + connection.threadId)

})

然后,我们可以通过建立一个连接来进行查询:

var mysql = require('mysql')

var connection = mysql.createConnection(...)

connection.query('SELECT 1', function(err, rows) {

// connected! (unless `err` is set)

})

以上二种方法都是正确且合适的。至于如何取舍,就要看你怎么去处理所遇到的错误了。不管哪种类型的错误,那都是致命的,我们需要去看所提示的具体的错误信息。

连接参数

在建立新连接时,可以设置以下参数:

host:连接的数据库地址。(默认:localhost)

port:连接地址对应的端口。(默认:3306)

localAddress: 源IP地址使用TCP连接。(可选)

socketPath:当主机和端口参数被忽略的时候,可以填写一个Unix的Socket地址。

user: mysql的连接用户名。

password: 对应用户的密码。

database: 所需要连接的数据库的名称。(可选)

charset: 连接的编码形式。这就是mysql中的整理。(例如:utf8_general_ci)如果被指定,则作为默认的整理排序规则。(默认:utf8_general_ci)

timezone:用来保存当前本地的时区。(默认:local)

connectTimeout: 设置在连接的时候,超过多久以后未响应则返回失败。(默认:10000)

stringifyObjects: stringify对象代替转换值。issue# 501。(默认:false)

insecureAuth:使用旧(不安全)的连接方式去连接MySQL。(默认:false)

typeCast: 确定列值是否需要转换为本地JavaScript类型。(默认:true)

queryFormat:自定义查询的方式。地址:Custom format.

supportBigNumbers: 如果你使用了BIGINT和DECIMAL格式的表列,那么需要开启这个参数来支持。(默认:false)只有当他们超过JavaScript所能表达的 最长的字节的时候,如果没有设置这个参数,则会将过长的数字作为字符串传递。否则,返回对象的长度。如果supportBigNumbers参数被忽略, 则这个参数也会被忽略。

dateStrings:一些日期类型(TIMESTAMP, DATETIME, DATE)会以Strings的类型返回,然后转换成JavaScript的日期对象。(默认:false)

debug:是否把连接情况打印到文件。(默认:false)

trace: 生成错误的堆栈跟踪,包括库入口的调用位置(“长堆栈的轨迹”)。一般会造成轻微的性能损失。(默认:true)

终止连接

终止连接的方法有两种。调用end()方法可以正常地终止一个连接:

connection.end(function(err) {

// 连接终止

})

这种方法将确保给MySQL服务器发送COM_QUIT包之前所有队列中的查询都会被执行。如果在发送COM_QUIT包之前发生了致命错误,那么会给回调函数传递一个err参数,但是不管怎样连接都会关闭。

另外一种终止连接的方法是调用destroy()方法。该方法会立即终止底层套接字(underlying socket)。另外,destroy()不会触发更多的事件和回调函数。

先安装mysql模块。

node.js默认安装时,模块文件放在 /usr/local/lib/node_modules 这个目录下,为了便宜管理,模块还是统一安装到这里好。

$ cd /usr/local/lib

$ npm install mysql

程序文件mysql.js

var Client = require('/usr/local/lib/node_modules/mysql').Client

var client = new Client()

client.user = 'root'

client.password = ''

console.log('Connecting to MySQL...')

client.query('USE tiny_shop')//如果MySQL中没有库表,赶紧建。

http = require("http")

var server = http.createServer(function(request, response) {

response.writeHeader(200, {"Content-Type": "text/html"})

client.query('SELECT * FROM tags', function selectCb(err, results, fields) {

if (err) {

throw err

}

var data = ''

for (var i=0i<results.lengthi++) {

var firstResult = results[i]

data += 'id: ' + firstResult['id']+'tag: ' + firstResult['tag']

}

response.write(data)

response.end()

})

})

server.listen(8080)

var sys = require("util")

sys.puts("Server running at http://localhost:8080/")

运行

$ node mysql.js


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8549402.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存