博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
逆向而行—ASP的O/R MAPPING
阅读量:6670 次
发布时间:2019-06-25

本文共 2460 字,大约阅读时间需要 8 分钟。

您看的没错,是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的类来实现,例如:

None.gif
class testclass 
None.gif 
None.gif
private
 s_id 
None.gif 
None.gif
private
 s_name 
None.gif 
None.gif
private
 s_article 
None.gif 
None.gif
private
 s_addtime 
None.gif 
None.gif  
None.gif 
None.gif
Public
 
Property
 
Let
 id(value) 
None.gif 
None.gif       s_id
=
value 
None.gif 
None.gif
End Property
  
None.gif 
None.gif
Public
 
Property
 
Get
 id 
None.gif 
None.gif       id
=
s_id 
None.gif 
None.gif
End Property
 
None.gif 
None.gif  
None.gif 
None.gif
Public
 
Property
 
Let
 name(value) 
None.gif 
None.gif       s_name
=
value 
None.gif 
None.gif
End Property
 
None.gif 
None.gif
Public
 
Property
 
Get
 name 
None.gif 
None.gif       Name
=
s_name 
None.gif 
None.gif
End Property
 
None.gif 
None.gif
public
 
property
 
get
 article 
None.gif 
None.gif       article
=
s_article 
None.gif 
None.gif
end property
 
None.gif 
None.gif
public
 
property
 
let
 article(value) 
None.gif 
None.gif       s_article
=
value 
None.gif 
None.gif
end property
 
None.gif 
None.gif  
None.gif 
None.gif
public
 
property
 
get
 addtime 
None.gif 
None.gif       addtime
=
s_addtime 
None.gif 
None.gif
end property
 
None.gif 
None.gif
public
 
property
 
let
 addtime(value) 
None.gif 
None.gif       s_addtime
=
value 
None.gif 
None.gif
end property
 
None.gif 
None.gif
End
 class 
None.gif

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

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

None.gif
<?
xml version="1.0" encoding="utf-8" 
?>
 
None.gif 
None.gif
<
aurora-map
>
 
None.gif 
None.gif       
<
class 
className
="testclass"
>
 
None.gif 
None.gif              
<
table
>
 
None.gif 
None.gif                     
<
id 
type
="numeric"
 iskey
="true"
 
/>
 
None.gif 
None.gif                     
<
name 
type
="text"
 
/>
 
None.gif 
None.gif                     
<
article 
type
="text"
 
/>
 
None.gif 
None.gif                     
<
addtime 
type
="text"
 
/>
 
None.gif 
None.gif              
</
table
>
 
None.gif 
None.gif       
</
class
>
 
None.gif 
None.gif
</
aurora-map
>
 
None.gif

这里的设计想法是 

<table>中是一个表的字段描述

Id name article addtime 都是字段名,

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

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

       还有一个就是配置文件了

None.gif
<
configuration
>
 
None.gif 
None.gif       
<
aurora
>
 
None.gif 
None.gif              
<
add 
key
="application"
 value
="web"
 
/>
 //指定是web应用还是,exe程序应用 
None.gif 
None.gif              
<
add 
key
="mapfile"
 value
="\"
 
/>
           //指定 mapflie的目录 
None.gif 
None.gif              
<
add 
key
="databasetype"
 value
="access"
 
/>
 //指定所有数据库 
None.gif 
None.gif              
<
add 
key
="driver"
 value
="Provider = Microsoft.Jet.OLEDB.4.0;"
 
/>
 //这两个是数据库的配置,根据不同数据库而不同 
None.gif 
None.gif              
<
add 
key
="Data Source"
 value
="db2.mdb"
 
/>
 
None.gif 
None.gif       
</
aurora
>
 
None.gif 
None.gif
</
configuration
>
 
None.gif

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

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

测试下载 
  

    本文转自无心之柳.NET博客园博客,原文链接:http://www.cnblogs.com/9527/archive/2004/12/22/80443.html,如需转载请自行联系原作者

你可能感兴趣的文章
如何使用PDF编辑工具给PDF文件添加背景
查看>>
联想E430不能从u盘启动【解决办法】
查看>>
安家在 51CTO
查看>>
jQuery 前端实现手机验证码
查看>>
Gitlab command line instructions
查看>>
HtmlAgilityPack
查看>>
电子政务信息交换平台与数据中心的构建(转)
查看>>
Pytorch实现UNet例子学习
查看>>
转载:Objective-C中的 instancetype 和 id 关键字
查看>>
【Linux】Ubuntu 代理配置
查看>>
iphone 存图片和视频到iPhone相册
查看>>
FZU 2158 数字密码
查看>>
一个服务器的Apache2.4.6配置多个域名
查看>>
正则表达式学习
查看>>
django中间件
查看>>
MyEclipse启动失败
查看>>
embedLibaray框架简介(一)
查看>>
C#将CAD数据转成shape或mdb的代码
查看>>
MVC的BundleConfig类
查看>>
p1229
查看>>