$ 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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)