一个ASP(JScript)简单SQL语句构建“类”,同时支持客户端和服务器端执行的

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<%@language="javascript" codepage="936"%>
<%
var queststringbuilder = function(){
    // 1->查询语句, 2->更新语句, 3->删除语句, 4->插入语句
    var questtype = 0;
    var fields = [];
    var values = [];
    var condition;
    var pk;
    var pkeysort;
    var tablename;
    var state = false;
    var clogic = " and ";
    var coperator = "=";
    this.addfield = function(field,value){
        fields.push(processfield(field));
        values.push(processvalue(value));
    };
    this.addcfield = function(cfield,cvalue){
        var stemp = [];
        if(condition!=undefined&&condition!=""){ stemp.push(condition); }
        if(coperator!="like"){
            stemp.push(processfield(cfield)+coperator+processvalue(cvalue));
        }else{
            stemp.push(processfield(cfield)+" like '%"+cvalue+"%'");            
        }
        condition = stemp.join(clogic);
        if(condition==""){ condition=stemp.tostring();}
    };
    this.table = function(s){tablename = s;};
    this.pkey = function(s){pk = processfield(s);};
    this.pkeyasc = function(){pkeysort="asc";};
    this.pkeydesc = function(){pkeysort="desc";};
    this.getselect = function(){
        questtype = 1;
        return result();
    };
    this.getupdate = function(){
        questtype = 2;
        return result();
    };
    this.getdelete = function(){
        questtype = 3;
        return result();
    };
    this.getinsert = function(){
        questtype = 4;
        return result();
    };
    this.clear = function(){
        fields = [];
        values = [];
        pk = undefined;
        pkeysort = undefined;
        tablename = undefined;
        state = false;
    };
    this.actionstate = function(){ return state;};
    this.changelogic = function(s){ clogic = " "+s.touppercase()+" ";};
    this.changeoperator = function(s){coperator = s.touppercase();};
    var result = function(){
        var strtemp;
        if(fields.length==0) fields.push("*");
        switch(questtype){
            case 1:
                if(tablename!=undefined&&tablename!=""){
                    strtemp = "select " + fields.tostring() + " from " + tablename;
                    if(condition!=undefined){ strtemp += " where " + condition;}
                    if(pkeysort!=undefined&&pk!=undefined){ strtemp += " order by " + pk + " " + pkeysort;}
                    state = true;
                }else{
                    strtemp = geterror(0); // 要求输入表名
                }
                return strtemp;
                break;
            case 2:
                if(tablename!=undefined&&tablename!=""){
                    strtemp = "update " + tablename + " set " + process(fields,values) ;
                    if(condition!=undefined){
                        state = true;
                        strtemp += " where " + condition;
                    }else{
                        strtemp = geterror(1);
                    }
                }else{
                    strtemp = geterror(0); // 要求输入表名
                }                
                return strtemp;
                break;
            case 3:
                if(tablename!=undefined&&tablename!=""){
                    strtemp = "delete from " + tablename ;
                    if(condition!=undefined){
                        state = true;
                        strtemp += " where " + condition;
                    }else{
                        strtemp = geterror(1);
                    }
                }else{
                    strtemp = geterror(0); // 要求输入表名
                }                
                return strtemp;
                break;
            case 4:
                if(tablename!=undefined&&tablename!=""){
                    strtemp = "insert into " + tablename ;
                    if(fields.length!=0){
                        state = true;
                        strtemp += "(" + fields.tostring() + ") values(" + values.tostring() + ")";
                    }else{
                        strtemp = geterror(2);
                    }
                }else{
                    strtemp = geterror(0); // 要求输入表名
                }                
                return strtemp;
                break;
        }
    };
    var processvalue = function(unknow){
        var inputtype = typeof(unknow);
        switch(inputtype){
            case "string":
                return "'"+unknow+"'";
                break;
            case "number":
                return unknow;
                break;
            case "boolean":
                return unknow;
                break;
        }
    };
    var processfield = function(unknow){
        return "["+unknow+"]";
    };
    var process = function(afield,avalue){
        var atemp = [];
        for(i=0;i<afield.length;i++){
            atemp.push(afield[i]+"="+avalue[i]);
        }
        return atemp.tostring();
    }
    var geterror = function(interror){
        if(typeof(interror)=="number"){
            switch(interror){
                case 0:
                    state = false;
                    return "need quest tablename, please using method table input one tablename!";
                    break;
                case 1:
                    state = false;
                    return "need one condition! please using method addcfield add condition!";
                    break;
                case 2:
                    state = false;
                    return "need insert values!";
                    break;
            }
        }
    };
};
var SQL = new queststringbuilder();
SQL.table("mytable");
SQL.addfield("test","1");
SQL.addfield("test1",23);
SQL.addcfield("id",93);
SQL.pkey("id");
SQL.pkeydesc();
// SQL.clear();
response.write( SQL.getdelete()+"<br>"+ SQL.actionstate());
%>

刚刚写完的,因为刚做了 一个 ASP.net的项目(使用access数据库),做了 一个 简单SQL 语句构建类,所以也写了个 ASP版的。它看上去对多表查询支持不是很好,但只要把表名换成视图名,就可以达到较好的效果。没有怎么写注释,麻烦大家自己看看了,或有兴趣的,可以改进一下。 < <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
有了这款基于JavaScriptASP开源MVC框架,你的asp老项目有可以焕发青春活力了!其实不伦是asp,php,java还是python,任何一种编程语言,只要是开源的,就可以不断更新,获得延续的生命力。 单文件入口。Single entry point. > > 代码和程序的真正分离。A real MVC. > > 模板编译ASP代码。Combine template file to ASP(JScript) code. > > 支持库扩展以及模板自定义标签扩展。Support Library and Tag extend. > > 支持多种数据库,默认支持ACCESS、MSSQL、MYSQLSQLITE,可自定义其他型数据库。Support Muti-Type-Databases. > > 支持多数据库操作。Support Muti-Databases-Operate. > > 表单验证支持,HTTP请求数据可直接用来更新数据库。FormValidatee is supported, and Http Post data can be used for insert or update table record(s). > > 提供HttpRequest,HttpUpload,Soap,OAUTH2.0等模块。"HttpRequest,HttpUpload,Soap,OAUTH2.0" are supported. > > 提供CryptoJS,提供AES/DES/RC4/Rabbit/pbkdf2/ripemd160等算法。CryptoJS is supported. > > 内置Json解析和构建。Json2 is built-in.You can use it to parse or stringify Json data. > > 支持多种路由方式,包括404、URL、isapi_URLRewrite,完全自定义的路由配置。URLRoute is Supported(404 Error Page, URL Route,ISAPI_URIRewrite). > > 路由支持REST。REST is Supported. > > 支持库缓存,编译缓存,HTML缓存,数据库Model缓存。Library Cache, Combined File Cache, HTML Cache and Model Cache. > > 资源统一管理,统一销毁,使您专心于业务逻辑处理。You can pay much more attention on you business.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值