zoukankan      html  css  js  c++  java
  • 逆向而行—ASP的O/R MAPPING

    您看的没错,是ASP not ASP.Net 我也没有发疯,我的目标就是实现一个简单的ASP环境下的O/R MAPPING,Visual Basic 6.0来实现.当然,由于Visual Basic毕竟不如C#,VB.net哪么强大,甚至它是否真正的面向对象也存在争论。所以 实现起来还是有一定的难度。

           我想和我一样,很多ASP的程序员,也饱受SQL语句之苦。特别是一些表单特别多的程序, 不断的做着重复的工作,就是 画表单,写SQL,然后插入,更新,删除,套用一句流行话语“我最烦这些SQL语句,一点技术含量都没有。如果 表的字段一多的话,哪简直就是写的昏天暗地。写好了还不一定对,调试SQL又是一个艰苦的工作。特别容易出错,不小心少了个号什么的,有时候找都找不出来。可是ASP程序员做得最多的就是这些。重复做除了字段不一样,其它都一样的工作。

           当我接触了一些 .Net JavaO/R Mapping以后,最让我激动的不是其强大的功能,支持事务等等一些优秀功能,而是,终于不用在写SQL了,爽啊,真得想就此放弃了ASP投入.Net的怀抱,但是没有办法, 现在还有很多项目 ,需要用ASP来实现,也还有很多同胞挣扎在ASP中。所以 要是有一个ASP下的的O/R Mapping工具改是多么美妙啊, 但是翻遍了互联网也没有找到,所以才出此下策,不如自己写一个试试。

           一开始目标,我也不想强求我的ASP O/R Mapping有多么强大,所以在设计的时候,组件就提供了 add update delete三个方法,至少,insert ,update,delete语句不用写sql了,呵呵。实体文件我用vbscript的类来实现,例如:

    class testclass

    private s_id

    private s_name

    private s_article

    private s_addtime

     

    Public Property Let id(value)

           s_id
    =value

    End Property 

    Public Property Get id

           id
    =s_id

    End Property

     

    Public Property Let name(value)

           s_name
    =value

    End Property

    Public Property Get name

           Name
    =s_name

    End Property

    public property get article

           article
    =s_article

    end property

    public property let article(value)

           s_article
    =value

    end property

     

    public property get addtime

           addtime
    =s_addtime

    end property

    public property let addtime(value)

           s_addtime
    =value

    end property

    End class

    关于实体文件没有什么过多可以解释的,反正 和数据库里的各个字段对映就可以了,而且vbscript不是强类型的语言,都不用指定数据类型。

    接下来就是 映射文件了,当来xml文件是首选

    <?xml version="1.0" encoding="utf-8" ?>

    <aurora-map>

           
    <class className="testclass">

                  
    <table>

                         
    <id type="numeric" iskey="true" />

                         
    <name type="text" />

                         
    <article type="text" />

                         
    <addtime type="text" />

                  
    </table>

           
    </class>

    </aurora-map>

    这里的设计想法是
    <table>
    中是一个表的字段描述

    Id name article addtime 都是字段名,

    Type 指定 该数据类型是文本,还是数字型的,这个的作用其实很简单,就是在生成sql的时候判断要不要加上单引号,本来打算是type是指定各个字段的数据类型的。但是后来一想没有一个毕要,哪样做反而麻烦,所以就简单至上了。

    Iskey 属性是指定是否用关键字段。

           还有一个就是配置文件了

    <configuration>

           
    <aurora>

                  
    <add key="application" value="web" /> //指定是web应用还是,exe程序应用

                  
    <add key="mapfile" value="\" />           //指定 mapflie的目录

                  
    <add key="databasetype" value="access" /> //指定所有数据库

                  
    <add key="driver" value="Provider = Microsoft.Jet.OLEDB.4.0;" /> //这两个是数据库的配置,根据不同数据库而不同

                  
    <add key="Data Source" value="db2.mdb" />

           
    </aurora>

    </configuration>

    整个的功能实现做成了AcitveX来实现,这是一个简单的类图,第一次画,有很多错误还请指出

    到现在为此这里的功能基本完成,但是还有很多需要优化和加强的地方。Bug也很多。先放出我昨天晚上编译的版本,这个也只是用于调试的版本。放出来是让大家帮我试试,给我提点意见,让我能更好的完善他,还有如果有什么好的建议,新的功能。也可以提出来,我们一起来实现。
    测试下载
    http://www.chinasunflower.com/test.rar 

  • 相关阅读:
    [NOIp2016] 天天爱跑步
    状压DP小拼盘
    DP × KMP
    KMP算法 详解+模板
    [NOI2014] 起床困难综合症
    [洛谷P3391] 文艺平衡树 (Splay模板)
    START
    【C】单链表的实现
    【数据结构】动态顺序表
    C语言实现扫雷程序
  • 原文地址:https://www.cnblogs.com/9527/p/80443.html
Copyright © 2011-2022 走看看