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
54
var 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 &amp;&amp; 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
50
var 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 = '&lt;html&gt; &lt;head&gt;'+
'&lt;/head&gt;&lt;body&gt;&lt;div align="center"&gt;&lt;h1&gt;TestMysql&lt;/h1&gt;'+
'&lt;table border="1" style="text-align:center;"&gt;&lt;tr&gt;'+
'&lt;th style="width:150px;"&gt;Id&lt;/th&gt;&lt;th style="width:150px;"&gt;firstName&lt;/th&gt;'+
'&lt;th style="width:150px;"&gt;LastName&lt;/th&gt;&lt;th style="width:150px;"&gt;Message&lt;/th&gt;&lt;/tr&gt;';
for (var i=0; i&lt;results.length; i++) {
var firstResult = results[i];
data += '&lt;tr&gt;&lt;td&gt;' + firstResult['id']+'&lt;/td&gt;'
+'&lt;td&gt;' + firstResult['firstname']+'&lt;/td&gt;'
+'&lt;td&gt;' + firstResult['lastname']+'&lt;/td&gt;'
+'&lt;td&gt;' + firstResult['message']+'&lt;/td&gt;'
+'&lt;/tr&gt;';
}
data +='&lt;/table&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;';
response.write(data);
response.end();
});
});

server.listen(8888);

var sys = require("util");
sys.puts("Server running at http://localhost:8888/");

//connection.end();//此处用不到end()

**最后,总结一下,两种方式有着不同的链接方式,自己认为还是第一种方式比较通俗易懂,很适合初学者学习。第二种方式,比较你接近面向对象化,是未来的一种发展趋势,也是非常好的方式,面向企业化的链接,易于管理。在实际应用中,根据自己的情况自己确定。**