当前位置: 首页 > news >正文

Oracle数据库

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

publicclassOracle : IDBAccessor

{

#region IDBAccessor 成员

privatestringcommandStr =string.Empty;

privatestaticstringconnectionString ="";

privateSystem.Data.IDbConnection oraConnection =newSystem.Data.OracleClient.OracleConnection(connectionString);

publicintExcute()

{

if(oraConnection.State != System.Data.ConnectionState.Open)

oraConnection.Open();

try

{

using(System.Data.IDbCommand command = oraConnection.CreateCommand())

{

command.CommandText = commandStr;

returncommand.ExecuteNonQuery();

}

}

catch(System.Exception)

{

return-1;

}

finally

{

}

}

publicvoidQuery()

{

thrownewNotImplementedException();

}

#endregion

}

其他的几个类型的数据库我们就不一一举例说明了,当然我这里面的接口中并没有考虑把数据库连接也定义成接口,让所有的都从这个接口进行继承,因为这个不是

本章讨论的重点,本章只是简单的分析与设计如何实现通用把数据层访问。

下面我们来说说对象关系映射的实现。

我们比较常见的方式目前就这样的2种方式,第一种方式想必大家都比较了解的,无论是JAVA中的Hibernate还是.NET中的Nhibernate都是这样的方式,以XML文

件的方式把数据库中的表列属性与实体的属性一一对应。第二种方式则是在类文件中硬编码书写数据库列与实体之间的映射关系。

下面我们来分析下这二种方式的利弊:

以上大概描述了各自的有点,下面再阐述下各自的缺点。

当然以上的2种形式各有优缺点,我们已经讲述了XML配置文件中现有的开源框架中采用这种形式的框架有Nhibernate。而采用类文件映射的框架其实有很多,但

是他们的思想相对来说都是一样的。不管是XML文件形式,还是类文件形式,他们的主要观点都是实现如何把实体的属性与数据库表字段的对应,这个才是核心的内容。

下面我们给出一种简单的思路去完成这样的映射,当然我们这里是以类文件形式给出示例。

其实博客园的很多人都写过类文件映射的实例。我这里当然也只是抛砖引玉,不足之处在所难免,还请大家多多提出意见。

我给出的方式是通过特性(Attribute)+反射(Rflection)的思想来实现ORM映射。

具体相应代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

/// <summary>

/// Model中的字段属性特性

/// </summary>

[AttributeUsage(AttributeTargets.All, AllowMultiple =false)]

publicclassPropertyAttribute : Attribute

{

privatestringdbColumnName;

privateboolisPrimary;

privateDbType dbType;

privateobjectdefaultValue;

privateboolisIdentify;

privateintlength;

publicstringDbColumnName

{

get

{

returnthis.dbColumnName;

}

set

{

this.dbColumnName = value;

}

}

publicboolIsPrimary

{

get

{

returnthis.isPrimary;

}

set

{

this.isPrimary = value;

}

}

publicboolIsIdentify

{

get

{

returnthis.isIdentify;

}

set

{

this.isIdentify = value;

}

}

publicDbType DbType

{

get

{

returnthis.dbType;

}

set

http://www.jsqmd.com/news/1125417/

相关文章:

  • 终极指南:如何用AI让Monika与你自由对话 - MonikA.I模组完全教程
  • 解决Ant发送邮件显示HTML源码问题:MIME类型配置详解
  • 三菱FX3U PLC运动轴控制与伺服调试实战
  • 如何永久保存微信聊天记录:你的数字记忆完全指南
  • Claude 全面解析:从基础原理到实战应用指南
  • 王千源惊喜亮相HYROX杭州站 不止是演员,更是运动“源”
  • PDF批量签章工具 V5.5 骑缝章智能分割 批量盖章 下载
  • ComfyUI Desktop 实例进入后一直loading的问题解决
  • WPF Multi-Touch 开发:Windows 7 安装多点触屏模拟器
  • 数字孪生助力制造业仿真优化全链路路径
  • STM32 数控电源 PCB 布局 5 要点:从 XL6019 布线到 INA180 抗干扰
  • 设计 Token 语义化:不要把颜色命名成 blue-500 就结束
  • AIGC 内容指纹:生成内容入库前先做可追踪设计
  • 从扩展方法到流畅的程序体验
  • 太香了!这个 GitHub 开源项目,让安卓模拟器直接跑在浏览器里,搞 AI 的必看
  • 项目汇报PPT工具怎么选?6款常用平台介绍
  • 2026年论文查重免费网站真的靠谱吗?5大平台横向测评与真相揭秘
  • CC Switch 接入 Codex 详细教程
  • 基于SpringBoot体质测试分析与可视化平台开发任务书
  • LB200倒置相差显微镜:类器官与器官芯片生命科学的前沿窗口
  • 【考研】2026/7/4
  • 人工智能训练的核心秘密:梯度下降与L1/L2正则化
  • 第【54期】--基于强化学习的NOMA通信系统资源动态调度算法研究--matlab完整代码
  • Go 调度器 GMP 模型的完整解析:从 goroutine 创建到抢占调度的全链路
  • CSDN文章如何轻松破百赞
  • TD-Learning 时序差分学习 和 Q-Learning 最优动作价值学习
  • 基于单片机人脸识别电子密码锁智能门禁指纹识别语音提醒防盗成品12(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • Linux gpg命令超全详解|文件加密解密、密钥管理、签名验证实战教程
  • 【监控与可观测性】05-OpenTelemetry入门:统一链路追踪落地方案
  • Windows部署OpenClaw AI智能体框架:从环境配置到实战应用全指南