复制代码 代码如下:
function getconfig(config, args) {
if (args) {
for (var proto in args) {
config[proto] = args[proto];
}
}
return config;
}
function getconnection() {
return new activexobject(adodb.connection);
}
function getrecordset() {
return new activexobject(adodb.recordset);
}
var db = {};
db.connectionstring = 'provider=sqloledb;user id=sa;password=sa;initial catalog=t;data source=www-d17f81fa113\\sqlexpress;';
//添加 一条记录
db.add = function (table, keyvaluecol) {
var returnid=null;
var conn = getconnection();
conn.open(db.connectionstring);
var rs = getrecordset();
rs.open('select * from '+table+' where 1=2', conn, 3, 2);
rs.addnew();
for (var key in keyvaluecol) {
rs.fields.item(key).value = keyvaluecol[key];
}
rs.update();
rs.close();
rs = null;
conn.close();
conn = null;
return db.get(select ident_current('+table+') as id)[id];
}
//修改一条记录
db.upd = function (sql, keyvaluecol) {
var conn = getconnection();
conn.open(db.connectionstring);
var rs = getrecordset();
rs.open(sql, conn, 3, 2);
for (var key in keyvaluecol) {
rs.fields.item(key).value = keyvaluecol[key];
}
rs.update();
rs.close();
rs = null;
conn.close();
conn = null;
}
//执行 无返回结果的查询
db.exe = function (sql) {
var conn = getconnection();
conn.open(db.connectionstring);
conn.execute(sql);
conn.close();
conn = null;
}
//获得 一个查询记录
db.get = function (sql) {
var _record = null;
var conn = getconnection();
conn.open(db.connectionstring);
var rs = getrecordset();
rs.open(sql, conn, 1, 1);
if (!rs.eof) {
_record = {};
for (var i = 0; i _record[rs.fields.item(i).name] = rs.fields.item(i).value;
}
}
rs.close();
rs = null;
conn.close();
conn = null;
return _record;
}
//批量 获得/添加 数据
db.batch = function () {
var conn = getconnection();
var rs = getrecordset();
var _batch = this;
var _table = null;
_batch.open = function (sql) {
conn.open(db.connectionstring);
rs.open(sql, conn, 3, 2);
}
_batch.add = function (table , keyvaluecol) {
rs.addnew();
for (var key in keyvaluecol) {
rs.fields.item(key).value = keyvaluecol[key];
}
rs.update();
return db.get(select ident_current('+ table +') as id)[id];
}
_batch.get = function () {
var record_arr = [];
while (!rs.eof) {
var _record = {};
for (var i = 0; i _record[rs.fields.item(i).name] = rs.fields.item(i).value;
}
record_arr.push(_record);
rs.movenext();
}
return record_arr;
}
_batch.close = function () {
rs.close();
rs = null;
conn.close();
conn = null;
}
}
//获得 sql 的某页的数据
db.list = function () {
var _config;
var _list = this;
_list.page = {
ps : 20,
ap : 1,
pc : 1,
rc : 1
};
_list.query = function () {
_config = new getconfig({
fields : * ,
table : null,
where : 1=1 ,
sort : id desc ,
pk : id
}, arguments[0]);
_list.page.rc = db.get(select count( + _config.pk + ) as [count] from +
_config.table + where + _config.where).count;
_list.page.pc = math.ceil(_list.page.rc / _list.page.ps);
if(_list.page.ap>_list.page.pc) _list.page.ap = _list.page.pc;
}
_list.get = function (p) {
p = isnan(p) ? 1 : parseint(p);
_list.page.ap = p;
var sql = '';
if (p > 1) {
sql = select top + _list.page.ps + + _config.fields +
from + _config.table + where + _config.where +
and + _config.pk +
not in(select top + (p - 1) * _list.page.ps + + _config.pk +
from + _config.table + where + _config.where +
order by + _config.sort + ) order by + _config.sort;
} else {
sql = select top + _list.page.ps + + _config.fields +
from + _config.table + where + _config.where + order by + _config.sort;
}
var return_arr = null;
var batch = new db.batch();
batch.open(sql);
return_arr = batch.get();
batch.close();
return return_arr;
}
}
//sql 只读
db.reader = function () {
var conn = getconnection();
var rs = getrecordset();
var _reader = this;
_reader.eof = false;
_reader.open = function (sql) {
conn.open(db.connectionstring);
rs.open(sql, conn, 1, 1);
_reader.eof = rs.eof;
}
_reader.read = function () {
if (!rs.eof) {
var _record = {};
for (var i = 0; i _record[rs.fields.item(i).name] = rs.fields.item(i).value;
}
rs.movenext();
return _record;
} else {
_reader.eof = true;
}
}
_reader.close = function () {
rs.close();
rs = null;
conn.close();
conn = null;
}
}
%>
