DB.ASP 用Javascript 写 ASP 很灵活很好用很easy
2011-07-29 10:26 dbfox 阅读(255) 评论(2) 编辑 收藏 举报<% 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 < Rs.Fields.Count; 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 < Rs.Fields.Count; 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 < Rs.Fields.Count; 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; } } %>