---------- 说明 ----------
1. 该代码可以免费使用, 该代码的名字暂时定为"哲别"
2. 如果你需要使用该代码, 请注明该代码的原来作者: Jacky Zhou
3. 如果你发现该代码有bug,可以自己修改或者请给我发email: zyx040404@163.com
4. 该数据库封装代码功能可以对数据库的表,视图和存储过程进行封装,易于系统移植,扩展,使用了interface,factory等方法
5. 核心代码是在"Sample\base\DBGW"里
6. Sample演示了查询,增加,删除记录和如何使用存贮过程
---------- 如何使用Sample代码 ----------
1. 数据库是SQL Server 2005, 在“sample\Database”里有已经生成的数据库,还有数据库脚本
2. 创建完数据库后需要创建数据库的ODBC, TdmSampleDBGW的AleasName必须是ODBC的名字, 参考TdmSampleDBGW.DataModuleCreate
//init m_db
m_db.AliasName := 'Sample_SQLServer';
3. 数据库的用户名和密码需要设置在
procedure TdmSampleDBGW.m_dbBeforeConnect(Sender: TObject);
begin
inherited;
if m_db.LoginPrompt = false then
begin
m_db.Params.Values['USER NAME'] := 'sa';
m_db.Params.Values['PASSWORD'] := '';
end;
end;
4. 每一个自定义的Entity类都必须要有一个对应的xml文件, xml文件必须放在“Sample\EntityMap\”路径下
5. 在Factory类里要创建每一个自定义的Entity类, 参考以下代码
//-----------------------------------------------------------------------------
// GetEntityName
//-----------------------------------------------------------------------------
function TFtySample.CreateEntity(strEntityName : String) : IEntity;
begin
strEntityName := LowerCase(strEntityName);
if (strEntityName = LowerCase(TEtyUser.Create.GetEntityName)) then
Result := TEtyUser.Create
else if (strEntityName = LowerCase(TEtySumAge.Create.GetEntityName)) then
Result := TEtySumAge.Create
else
Result := nil;
end;
---------- 如何写xml文件 ----------
<EntityMap>
<!--etyUser是TEtyUser.GetEntityName()的值-->
<EntityName>etyUser</EntityName>
<!--Table表示该etyUser对应的是数据库的表-->
<LoadType>Table</LoadType>
<!--tabUser 是对应的是数据库的表的名字-->
<TableName>tabUser</TableName>
<Fields>
<Field>
<!--UserName 是TEtyUser类的一个常量字符串, 是FD_USER_NAME = 'UserName'-->
<EntityFieldName>UserName</EntityFieldName>
<!--UserName是Entity的UserName对应在表tabUser里的字段名字-->
<TableFieldName>UserName</TableFieldName>
<!--string是字段的类型-->
<TableFieldType>string</TableFieldType>
<!--字段是否是表的主键(Primary Key)-->
<IsPK>true</IsPK>
</Field>
<Field>
<EntityFieldName>Address</EntityFieldName>
<TableFieldName>Address</TableFieldName>
<TableFieldType>string</TableFieldType>
<IsPK>false</IsPK>
</Field>
<Field>
<EntityFieldName>Age</EntityFieldName>
<TableFieldName>Age</TableFieldName>
<TableFieldType>int</TableFieldType>
<IsPK>false</IsPK>
</Field>
</Fields>
</EntityMap>
说明:
1. "EntityMap"文件夹的路径必须和EXE路径一样
2. <LoadType>目前可以是Table, StoredProc
3. <TableFieldType>目前可以是string, int等
---------- 注意事项 ----------
1. 数据库的字段类型必须是delphi能识别的, 参考 http://www.delphibbs.com/delphibbs/dispq.asp?lid=3693204
---------- 需要改进的地方 ----------
1. 目前只测试过SQL Server数据库, 没有测试过其他数据库
2. <TableFieldType>目前可以是string, int等, 但需要改进
3. <LoadType>目前可以是Table, StoredProc, 但需要改进
4. 不支持主从表直接操作
5. 需要改进FormatValueAppToDB
6. 需要改进FormatValueDBToApp
7. 需要改进ConnectionPool
8. 数据库暂时是用ODBC, 可以改成其他方式
---------- 已知bug ----------
1. TEtyList.Clear并没有真正释放内存
2. Entity = nil并没有真正释放内存, 参考 http://www.delphibbs.com/delphibbs/dispq.asp?lid=3674946
没有合适的资源?快使用搜索试试~ 我知道了~
数据库封装原代码(Delphi)
共44个文件
dcu:14个
pas:14个
dfm:3个
5星 · 超过95%的资源 需积分: 10 280 下载量 78 浏览量
2007-04-09
09:00:20
上传
评论 5
收藏 799KB ZIP 举报
温馨提示
1. 该代码可以免费使用, 该代码的名字暂时定为\"哲别\" 2. 如果你需要使用该代码, 请注明该代码的原来作者: Jacky Zhou 3. 如果你发现该代码有bug,可以自己修改或者请给我发email: zyx040404@163.com 4. 该数据库封装代码功能可以对数据库的表,视图和存储过程进行封装,易于系统移植,扩展,使用了interface,factory,xml等方法 5. 核心代码是在\"Sample\\base\\DBGW\"里 6. Sample演示了查询,增加,删除记录和如何使用存贮过程 如果你没有做过,那这些代码可以用来学习 诚然,这并不是最好的代码,而且中国高人如云 学海无涯
资源推荐
资源详情
资源评论
收起资源包目录
Sample.zip (44个子文件)
Sample
EntityMap
EtySumAge.xml 338B
EtyUser.xml 689B
Unit1.ddp 51B
EtyClass
EtyUser.dcu 4KB
EtySumAge.pas 4KB
EtySumAge.dcu 4KB
EtyUser.pas 5KB
CtrClass
CtrSample.dcu 2KB
CtrSample.pas 3KB
FtyClass
FtySample.pas 844B
FtySample.dcu 2KB
Project1.res 876B
Unit1.dcu 21KB
SampleDBGW
SampleDBGW.dfm 650B
SampleDBGW.pas 6KB
SampleDBGW.dcu 6KB
base
DBGW
DBGW.ddp 51B
DBGW.dfm 423B
DBGW.pas 33KB
DBGW.dcu 25KB
Entity
Entity.dcu 932B
EtyEntityMapField.pas 5KB
EtyRule.pas 4KB
EntityFactory.pas 239B
EtyCondition.pas 4KB
Entity.pas 675B
EtyList.dcu 3KB
EtyCondition.dcu 4KB
EtyEntityMapField.dcu 5KB
EntityFactory.dcu 589B
EtyRule.dcu 3KB
EtyList.pas 4KB
UDF
UDF.pas 13KB
UDF.dcu 9KB
Unit1.dfm 5KB
Project1.cfg 386B
说明.txt 4KB
DataBase
Sample.mdf 2MB
tabUser.sql 540B
Sample_log.ldf 1024KB
sp_GetSumAge.sql 994B
Project1.dpr 825B
Project1.dof 1KB
Unit1.pas 18KB
共 44 条
- 1
zyx040404
- 粉丝: 101
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- date0425111111111111111111111
- 包含贪心算法的定义及python代码部分实现
- 自动驾驶-状态估计和定位之扩展卡尔曼滤波.pdf
- csdn之x-ca-key,x-ca-nonce,x-ca-signature与x-ca-signature-headers探索
- 基于TM1620数码显示芯片STM32单片机驱动程序软件源代码.zip
- 【tomcat6使用redis配置session共享】
- 包含杨辉三角的说明及java代码实现
- FDN371N-NL-VB一款SOT23封装N-Channel场效应MOS管
- AutomotiveSPICE-V4.0 中文版
- Java实现杨辉三角的生成和打印代码示例.md
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页