使用javascript操作数据库,显然是不安全的做法,而且一般也不是这么玩。但是从另外一个角度看,当你把它当做一个简单的开发工具使用,想看看数据库数据而已,那么javascript查看数据也是一个不错的选择。
抱着学习的心态,接着上网查了一些资料以后,就动手写了一个小工具,作用是:用来写sql把返回的数据返回,和写sql update数据库。
前提
运行的电脑必须要设置有odbc数据源连接.
如mysql 需要下载odbc支持:http://www.mysql.com/downloads/connector/odbc/
安装完以后配置源,控制面板->搜索odbc->
添加上面odbc配置。
notes:驱动有32位跟64位之分,如果是64位driver那么就需要64位的IE打开,要不就会报错
连接抛异常[Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
ok,数据源完成的基础上开始进行javascript 操作数据库开发工作。
开始编码
- 创建odbc数据库连接对象,配置连接字符串
DSN=mysqldb;SERVER=127.0.0.1;User ID=root;Password=root;Database=esap;Port=3306
- 打开连接对象
reset_conn : function(dbstr) {
// 创建odbc对象
var connection = new ActiveXObject("ADODB.Connection");
// 连接字符串
// DSN=mysqldb;SERVER=127.0.0.1;User ID=root;Password=root;Database=esap;Port=3306
connection.ConnectionString = dbstr;
this.conn = connection;
this.lock_conn();
},
- 创建结果集对象&&执行sql
// 执行查询
executeQuery : function(sql) {
var rtn = [];
if (sql) {
try {
// 开启连接
this.conn.open();
// resultSet
var rs = new ActiveXObject("ADODB.Recordset");
rs.open(sql, this.conn);
// 数据转换
rtn = this.parseRes(rs);
} finally {
if (typeof (rs) != 'undefined') {
rs.close();
}
;
if (typeof (this.conn) != 'undefined') {
this.conn.close();
}
}
}
return rtn;
},
- 结果集遍历
// 数据转换
parseRes : function(rs) {
var data = [];
data.datas = {};
data.datas.records=[];
var first = true;
var index=1;
while (!rs.eof) {
if (first) {
var heads = [{h_name:"#"}];
for ( var i = 0, len = rs.Fields.count; i < len; i++) {
heads.push({
h_name : rs.Fields(i).Name
});
}
first = false;
data["heads"] = heads;
}
var records = {field:[{h_head:"#",d_value:index}]};
for ( var v = 0, v_len = rs.Fields.count; v < v_len; v++) {
// datas:[{records:[]}]
// {d_head:"",d_value:""}
var record={};
record["h_head"] = rs.Fields(v).Name;
record["d_value"] = rs.Fields(v).Value;
records.field.push(record);
}
data.datas.records.push(records);
// ....
rs.moveNext;
index++;
}
return data;
},
- 执行update 操作Sql
// 执行sql
executeUpdate : function(sql) {
if (sql) {
try {
this.conn.open();
this.conn.execute(sql);
} finally {
this.conn.close();
}
}
}
完成基础操作以后就构造页面。
ok,附带源码记录:
https://github.com/tian-github/dbQuery