NodeJs连接数据库
NodeJs链接数据库的问题,这里涉及到node的版本的问题,所以这里就说一下新旧版本链接数据库的方法问题。
首先,无论新旧版本,都得安装mysql驱动,类似与jdbc驱动的东西。
linux下安装方法:
安装mysql 插件
1
npm install mysql
安装成功后的位置:
C:\Users\用户名\node_modules\mysql//此为windows下的安装路径,自己可以任意设置,不过要记住安装路径
/opt/mysql/node_modules/mysql //此为linux下的安装路径
查看readme.md文件的方法
http://daringfireball.net/projects/markdown/dingus
其次,编写一个小例子进行测试。
//此为较低版本的的数据库链接方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54var mysql = require('mysql'); <span style="color: #993300;"> //mysql与项目在一个目录</span>
var TEST_DATABASE = 'nodejs_db';
var TEST_TABLE = 'test';
//创建连接
var client = mysql.createClient({
user: 'root',
password: 'rainbow',
});
//创建数据库
client.query('CREATE DATABASE '+TEST_DATABASE, function(err) {
if (err && err.number != mysql.ERROR_DB_CREATE_EXISTS) {
throw err;
}
});
//不指定回调函数,如果出错,则体现为客户端错误
client.query('USE '+TEST_DATABASE);
//创建表格,插入数据
client.query(
'CREATE TABLE '+TEST_TABLE+
'(id INT(11) AUTO_INCREMENT, '+
'name VARCHAR(255), '+
'PRIMARY KEY (id))'
);
client.query(
'INSERT INTO '+TEST_TABLE+' '+
'SET name = ?',
['nodejs1']
);
var query = client.query(
'INSERT INTO '+TEST_TABLE+' '+
'SET name = ?',
['nodejs2']
);
//查询,并设置回调函数
client.query(
'SELECT * FROM '+TEST_TABLE,
function selectCb(err, results, fields) {
if (err) {
throw err;
}
console.log(results);
console.log(fields);
client.end();
}
);
//此为较高版本的的数据库链接方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50var mysql = require('<span style="color: #993300;">/usr/local/lib/node_modules/mysql</span>');<span style="color: #993300;">//此路径为mysql的驱动安装路径</span>
<span style="color: #993300;">var connection = mysql.createConnection({</span>
<span style="color: #993300;"> host : 'localhost',</span>
<span style="color: #993300;"> port : 3306,</span>
<span style="color: #993300;"> user : 'root',</span>
<span style="color: #993300;"> password : 'mysql',</span>
<span style="color: #993300;"> database : 'testMysql',</span>
<span style="color: #993300;"> charset : 'UTF8_GENERAL_CI',</span>
<span style="color: #993300;"> debug : false</span>
<span style="color: #993300;">});</span>
//connection.connect();
console.log('Connection to Mysql');
http = require("http");
var server = http.createServer(function(request, response) {
response.writeHeader(200, {"Content-Type": "text/html"});
<span style="color: #993300;">connection.query('USE testMysql');</span>
<span style="color: #993300;">connection.query('SELECT * FROM myTable', function(err, results, fields)</span> {
if (err) {
throw err;
}
var data = '<html> <head>'+
'</head><body><div align="center"><h1>TestMysql</h1>'+
'<table border="1" style="text-align:center;"><tr>'+
'<th style="width:150px;">Id</th><th style="width:150px;">firstName</th>'+
'<th style="width:150px;">LastName</th><th style="width:150px;">Message</th></tr>';
for (var i=0; i<results.length; i++) {
var firstResult = results[i];
data += '<tr><td>' + firstResult['id']+'</td>'
+'<td>' + firstResult['firstname']+'</td>'
+'<td>' + firstResult['lastname']+'</td>'
+'<td>' + firstResult['message']+'</td>'
+'</tr>';
}
data +='</table></div></body></html>';
response.write(data);
response.end();
});
});
server.listen(8888);
var sys = require("util");
sys.puts("Server running at http://localhost:8888/");
//connection.end();//此处用不到end()