一个用JS写的简单数据库操作类,请帮忙看看。

时间:2022-12-11 16:10:43
目的:
用几个实例对数据库进行简单的操作。
操作方法:rs.Recordset,Conn.Execute 自动判断。

初次接触JS的类,已经有些糊涂了,麻烦请教关闭数据库的方法。
应该怎么写才能真正的关闭数据库呢?


<%@LANGUAGE="JAVASCRIPT"%>

<%
//==========access数据库操作_class======================
function DbConn_class() {
//------------------连接数据库_method-------------------
this.dbOp_method = function(db_patch, db_select, db_from, db_where) {
var conn = new ActiveXObject("ADODB.Connection");
var connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+db_patch; //数据库路径
conn.ConnectionTimeout = 30; //超时
conn.Open(connStr);
if (conn.State == "adStateClosed") {
Response.Write(db_error1); //错误提示1
} else {
if (db_select) {
//------------------操作数据库 db_set = Recordset_method----------------------
var rs = new ActiveXObject("ADODB.Recordset");
var sql = "select "+db_select+" from "+db_from+" where "+db_where;
rs.open(sql, conn);
this.dbRs_method = function(db_set, db_values) {
if (!rs.bof || !rf.eof) {
Response.Write(db_error2); //错误提示2
} else {
var sql = "rs."+db_set+"("+db_values+")";
eval(sql);
}
} else {
//------------------操作数据库 db_set = Execute_method--------------------------
this.dbRs_method = function(db_set, db_values) {
var sql = "conn."+db_set+"("+db_values+")";
eval(sql);
}
//------------------关闭数据库 未完成部分_method-----------------------
this.dbEd_method = function() {
sql = null;
rs.Close();
conn.Close();
}
}
}
}
//-----------实例_method----------------------------
var db_op = new DbConn_class().dbOp_method; //连接
var db_rs = new DbConn_class().dbRs_method; //操作
var db_ed = new DbConn_class().dbEd_method; //关闭
%>

6 个解决方案

#1


你这么写我突然意识到js操作数据库的一个好处了.....

#2


啥好处?=口=|||

#3


观看……

#4


hta的js跟用asp的js基本是是一样的了,呵呵

#5


因为asp是用server.createobject,而hta是createobject,js都是一样的,呵呵,以前没想到过这个层面的

#6


呼,修正补充了一下,基本上可以对数据库正常操作了。
核心代码大概就是这样子,一些错误判断和功能扩展没有添加。
原本是想进行完全封装,即数据库连接-->操作--->关闭只需调用一个实例即可一次性完成,不过这样有些不切实际,操作起来也不太灵活。
现在的想法是尽量简化Recordset部分的操作。希望有兴趣的朋友共同探讨。

//========access数据库操作类========
<%
function DbConn_class() {
    this.op = function(db_patch, db_sql, db_ct, db_lt) {
        var conn = Server.CreateObject("ADODB.Connection");
        conn.ConnectionString = "Provider=microsoft.jet.oledb.4.0;data source="+Server.MapPath(db_patch);
        conn.ConnectionTimeout = 30;
        conn.Open();
        if (conn.State == "adStateClosed") {
            Response.Write(db_error1);
            Response.End();
        }
        if (db_sql) {
            var rs = Server.CreateObject("ADODB.Recordset");
            rs.Source = db_sql;
            rs.ActiveConnection = conn;
            rs.CursorType = db_ct;
            rs.LockType = db_lt;
            rs.Open();
            this.rs = function(db_act, db_par) {
                if (rs.bof || rs.eof) {
                   Response.Write(db_error2);
                   Response.End();
                }
                    if (!db_par) var db_par="";
                        var sql = "rs."+db_act+"("+db_par+")";
                       eval(sql);
                    }
                } else {
                    this.rs = function(db_sql) {
                       var sql = db_sql;
                       conn.Execute(sql);
                    }
                }
                this.ed = function() {
                sql = null;
                rs.Close();
                rs = null;
                conn.Close();
                conn = null;
            }
        }
}

//实例化 使用方法:
//db.op(数据库路径, 数据集, 指针, LockType);
//db.rs(rs方法, rs参数); 或
//当db.op(只有路径时) db.rs(Execute方法)
//db.ed(); 有待完善

var db = new DbConn_class();
%>

#1


你这么写我突然意识到js操作数据库的一个好处了.....

#2


啥好处?=口=|||

#3


观看……

#4


hta的js跟用asp的js基本是是一样的了,呵呵

#5


因为asp是用server.createobject,而hta是createobject,js都是一样的,呵呵,以前没想到过这个层面的

#6


呼,修正补充了一下,基本上可以对数据库正常操作了。
核心代码大概就是这样子,一些错误判断和功能扩展没有添加。
原本是想进行完全封装,即数据库连接-->操作--->关闭只需调用一个实例即可一次性完成,不过这样有些不切实际,操作起来也不太灵活。
现在的想法是尽量简化Recordset部分的操作。希望有兴趣的朋友共同探讨。

//========access数据库操作类========
<%
function DbConn_class() {
    this.op = function(db_patch, db_sql, db_ct, db_lt) {
        var conn = Server.CreateObject("ADODB.Connection");
        conn.ConnectionString = "Provider=microsoft.jet.oledb.4.0;data source="+Server.MapPath(db_patch);
        conn.ConnectionTimeout = 30;
        conn.Open();
        if (conn.State == "adStateClosed") {
            Response.Write(db_error1);
            Response.End();
        }
        if (db_sql) {
            var rs = Server.CreateObject("ADODB.Recordset");
            rs.Source = db_sql;
            rs.ActiveConnection = conn;
            rs.CursorType = db_ct;
            rs.LockType = db_lt;
            rs.Open();
            this.rs = function(db_act, db_par) {
                if (rs.bof || rs.eof) {
                   Response.Write(db_error2);
                   Response.End();
                }
                    if (!db_par) var db_par="";
                        var sql = "rs."+db_act+"("+db_par+")";
                       eval(sql);
                    }
                } else {
                    this.rs = function(db_sql) {
                       var sql = db_sql;
                       conn.Execute(sql);
                    }
                }
                this.ed = function() {
                sql = null;
                rs.Close();
                rs = null;
                conn.Close();
                conn = null;
            }
        }
}

//实例化 使用方法:
//db.op(数据库路径, 数据集, 指针, LockType);
//db.rs(rs方法, rs参数); 或
//当db.op(只有路径时) db.rs(Execute方法)
//db.ed(); 有待完善

var db = new DbConn_class();
%>