当前位置:编程学习 > JAVA >>

自己动手写ORM框架(二):AdoHelper支持多数据库操作的封装(1)

在第二章,主要是底层的针对于数据库的CRUD,包括对于不同类型数据库的可扩展性。
第一步:编写AdoHelper类,用于封装对数据库的操作,能同时支持多个数据库(目前支持SqlServer、Oracle、Access),可扩展支持任何类型的数据库。
 
下面先进行代码片段分析,分析完毕后将贴出完整代码,代码块1-1:
 
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Text;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.OracleClient;
using System.Orm.Common;
 
namespace System.Orm.DBUtility
{
    public class AdoHelper
    {
        //获取数据库类型
        private static string strDbType = CommonUtils.GetConfigValueByKey("dbType").ToUpper();
 
        //将数据库类型转换成枚举类型
        public static DatabaseType DbType = DatabaseTypeEnumParse<DatabaseType>(strDbType);
       
       //获取数据库连接字符串
        public static string ConnectionString = GetConnectionString("connectionString");
 
       //获取数据库命名参数符号,比如@(SQLSERVER)、:(ORACLE)
       public static string DbParmChar = DbFactory.CreateDbParmCharacter();
 
(剖析Step1 Begin)==================================================
    代码块1-1中private static string strDbType = CommonUtils.GetConfigValueByKey("dbType").ToUpper();使用到了CommonUtils.GetConfigValueByKey方法,通过读取传入的dbType字符串,到web.config配置文件中取出所配置的数据库类型,配置文件代码块1-2:
 
<?xml version="1.0"?>
<configuration>
<appSettings>
    <add key="dbType" value="oracle"/>
    <add key="connectionString" value="DataSource=test;UserID=test;Password=123"/>
</appSettings>
<system.web>
    <compilation debug="true">
    </compilation>
    <authentication mode="Windows"/>
</system.web>
</configuration>
下面是CommonUtils.GetConfigValueByKey方法的实现代码块1-3:
 
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Reflection;
 
namespace System.Orm.Common
{
    public class CommonUtils
    {
        // <summary>
        // 根据传入的Key获取配置文件中的Value值
         // </summary>
        // <param name="Key"></param>
        // <returns></returns>
        public static string GetConfigValueByKey(string Key)
        {
            try
            {
                return ConfigurationManager.AppSettings[Key].ToString();
            }
            catch
            {
                throw new Exception("web.config中 Key=\"" + Key + "\"未配置或配置错误!");
            }
        }
 
(剖析Step1 End)==================================================
(剖析Step2 Begin)==================================================
    代码块1-1中public static DatabaseType DbType = DatabaseTypeEnumParse<DatabaseType>(strDbType);
 
这段代码是将在配置文件中取到的数据库类型字符串(比如:oracle)转换成已经定义的枚举类型,这里转换为DatabaseType枚举,DatabaseType代码块1-4:
 
using System;
using System.Collections.Generic;
using System.Text;
 
namespace System.Orm.DBUtility
{
    // <summary>
    // 数据库类型枚举,需要扩展类型可在此添加
    // </summary>
    public enum DatabaseType
    {
        SQLSERVER,
        ORACLE,
        ACCESS,
        MYSQL
    }
}
 
然后分析如何将字符串转换成枚举类型,用到DatabaseTypeEnumParse这个方法,代码块1-5:
 
        // <summary>
        // 用于数据库类型的字符串枚举转换
         // </summary>
        // <typeparam name="T"></typeparam>
        // <param name="value"></param>
        // <returns></returns>
        public static T DatabaseTypeEnumParse<T>(string value)
        {
            try
            {
                return CommonUtils.EnumParse<T>(value);
            }
            catch
            {
                throw new Exception("数据库类型\"" + value + "\"错误,请检查!");
            }
        }     
 
这里实现枚举转换的功能来自CommonUtils.EnumParse<T>(value);代码块1-6:
 
        // <summary>
        // 用于字符串和枚举类型的转换
         // </summary>
        // <typeparam name="T"></typeparam>
        // <param name="value"></param>
        // <returns></returns>
        public static T EnumParse<T>(string value)
        {
            try
            {
                return (T)Enum.Parse(typeof(T), value);
            }
            catch
            {
                thro
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,