node-webkit连接mysql
一、安装node.js mysql驱动库
node-webkit里面没有mysql模块的,我们需要安装mysql模块。我们可以使用npm(Node package manager)进行安装。这里使用到的版本为:"2.0.0-rc2"。安装步骤如下:
1、打开cmd输入命令:npm install -g mysql 回车,下载完成之后效果图如下:
mysql下载的目录为C:\Users\user\AppData\Roaming\npm\node_modules。
二、编写相关代码
1、创建index.html文件,文件内容如下:
1 <html> 2 <head> 3 <title>Demo</title> 4 <meta http-equiv="Content-Type" content="text/html; charset=gbk" /> 5 <script type="text/javascript" src="script.js"></script> 6 </head> 7 <body > 8 name: <input type="text" id="name" /> password: <input type="text" id="password" /> <input type="button" value="add" onclick="add();"/><br/> 9 <div id="info"><div> 10 11 </body> 12 </html>
2、创建script.js文件,文件内容如下:
1 var mysql = require('./mysql');//加载数据库模块 2 var TEST_DATABASE = 'nodejs_mysql_test';//数据库名 3 var TEST_TABLE = 'user';//表名 4 var client ; 5 var infodiv; 6 7 window.onload = function (){ 8 client = mysql.createConnection({ 9 host : '127.0.0.1', //主机地址 10 user : 'root', //数据库用户名 11 password : '123456'//数据库密码 12 }); 13 client.query('USE '+TEST_DATABASE);//使用该数据库 14 infodiv = document.getElementById("info"); 15 queryAll(); //查询所有数据 16 } 17 18 //日期格式转换 19 Date.prototype.Format = function(fmt) 20 { 21 var o = { 22 "M+" : this.getMonth()+1, //月份 23 "d+" : this.getDate(), //日 24 "h+" : this.getHours(), //小时 25 "m+" : this.getMinutes(), //分 26 "s+" : this.getSeconds(), //秒 27 "q+" : Math.floor((this.getMonth()+3)/3), //季度 28 "S" : this.getMilliseconds() //毫秒 29 }; 30 if(/(y+)/.test(fmt)) 31 fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 32 for(var k in o) 33 if(new RegExp("("+ k +")").test(fmt)) 34 fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); 35 return fmt; 36 } 37 38 //添加数据 39 function add(){ 40 var name = document.getElementById("name"); 41 var password = document.getElementById("password"); 42 var date = (new Date()).Format("yyyy-MM-dd hh:mm:ss"); 43 client.query('INSERT INTO '+TEST_TABLE+' SET username = ?, password = ?, created = ?',[name.value, password.value, date],function(err, results){ 44 if(results.insertId != null){ 45 alert("添加成功"); 46 }//返回记录id 47 }); 48 infodiv.innerHTML=""; 49 queryAll(); 50 } 51 52 //查询所有数据 53 function queryAll(){ 54 client.query('select * from '+TEST_TABLE,function(err, results){ 55 var info="id username password createdate</br>"; 56 for(var i = 0; i < results.length; i++){ 57 var person = results[i]; 58 var date=new Date(person.created); 59 var dateStr = date.Format("yyyy-MM-dd"); 60 info += person.id + " " + person.username + " " + person.password + " " +dateStr + " <lable onclick='toremove("+person.id+");'>delete</lable> </br>"; 61 } 62 infodiv.innerHTML=info; 63 }); 64 } 65 66 //删除数据 67 function toremove(id){ 68 if(confirm("确定删除?")){ 69 client.query("delete from user where id = ?", [ id ], function(err, results) {//删除id为1的记录 70 var str = JSON.stringify(results); 71 /**result 如下的信息 72 { 73 fieldCount: 0, 74 affectedRows: 1, 75 insertId: 0, 76 serverStatus: 2, 77 warningCount: 0, 78 message: '', 79 protocol41: true, 80 changedRows: 0 81 } 82 */ infodiv.innerHTML=""; 83 queryAll(); 84 }); 85 } 86 } 87 88 //修改数据 89 /**client.query("update user set password = ? where id = ?", [ "123456", 4 ], function(err, results) {//修改id为1的记录的password 90 var str = JSON.stringify(results); 91 alert(str); 92 // alert(results); 93 /** result 如下的信息 94 { fieldCount: 0, 95 affectedRows: 1, 96 insertId: 0, 97 serverStatus: 2, 98 warningCount: 0, 99 message: '(Rows matched: 1 Changed: 1 Warnings: 0', 100 protocol41: true, 101 changedRows: 1 102 } 103 104 }); */ 105 106 client.end();//关闭连接
3、package.json文件,文件内容如下:
1 { 2 "name": "nw-demo", 3 "main": "index.html" 4 }
4、将C:\Users\user\AppData\Roaming\npm\node_modules目录下的mysql目录拷贝到与package.json、index.html等文件的相同目录,然一起压缩成zip包,重命名为mysql.nw。打包后的目录结构如下图所示:
5、将这个压缩文件运行,可进行简单的添加,删除与查询所有的功能。因为修改的功能有些繁琐,这里就没有实现。但是script.js已经有相关的修改代码,可以根据那些代码进行实现。运行后的界面如下图所示: