zoukankan      html  css  js  c++  java
  • 我的数据访问类(第二版)—— for .net2.0 (一)

    asp.net2.0已经出来好久了,由于许多的原因一直没有使用,一个月前才开始使用VS2005写东西。

    这一个月里又重新学习了一下基础知识,比如多态、接口了什么的。

    既然已经到了2.0了嘛,那么以前的数据访问的方式要不要变一下呢?简单看了一下,感觉还是我的那种方式好,至少时我已经用习惯了。那么用.net2.0的方法重写一遍吧。

    看了一下Framework 2.0的代码,发现一个问题。虽然表面上ADO.NET的使用没有什么变化(加了一些功能,原来由的功能没有变),但是内部实现有比较大的变化,原来的接口的“工作”都改成了抽象基类。

    正好可以利用这个特性来改一下支持多数据库的部分。

    数据访问类分成了两个DLL,共 3+3个部分。

    本着把变化提出来的思想,我把变化的地方编译成一个DLL,相对不变的地方编译成另一个DLL。

    变化的地方又分为三个部分:读取web.config里的信息,基类,写错误日志。

    不变的地方分为三个部分:SQL语句部分(静态函数),存储过程部分(需要实例化),填充实体类部分。

    下面是容易变化的DLL代码:

    读取Webconfig文件

    着里的处理并不是太好,只是还没有想到更好的方法。

    主要是读取连接字符串和数据库类型。

    ==================================================

    简单工厂,根据数据库类型返回实例对应的实例。

      1sing System;
      2using System.Collections.Generic;
      3using System.Text;
      4using System.Data;
      5using System.Data.Common;
      6using JYK;
      7
      8namespace JYK.DataAccessLibrary
      9{
     10    /// <summary>
     11    /// 返回Connection、Command、DataAdapter
     12    /// </summary>

     13    public class Factory
     14    {
     15
     16        public static string DataBaseType = WebConfig.DataBaseType();
     17        Connection
     47
     48        Command
     77
     78        DataAdapter
    116      
    117    }

    118}

    119

    一、利用了System.Data.Common; 里面的一些基类。

    System.Data.Common.DbProviderFactory 还没有研究,好像可以利用它来实现,去掉switch。

    但是我觉得数据访问的地方是比较特殊的,

    1、数据库的种类是有限的,常用的也就三个(对于.net来说):MS SQL 、Orcale 、Access(属于OleDb),算上不常用的应该超不过十种,全都算上也超不过30种吧。

    2、变化慢,出现一种新的数据库要多长时间呢?好长好长吧。

    3、运行效率高,访问数据库是很频繁的事情,应该尽量提高运行效率,去掉不必要的地方。

    综上所述,我感觉switch更好一点。两外为什么说这里是容易变化的地方呢?因为这里可以做很多的变化。

    a、比如说我只用MS SQL,不可能用到其它的数据库,那么我可以把 简化 CreateConnection() 函数,去掉判断的部分,直接返回 SqlConnection()。这样可以提高一点效率。

    b、比如我只在MS SQL和 Orcale 之间切换,那么我可以只写两个判断,呵呵,以后再加数据库,再加一条判断就可以了。因为数据库的变换是很慢的,所以改动程序也没有什么麻烦的。


    二、这里的处理也不是太好,至少缩小了使用范围,这么写的目的主要是让调用的地方减少点代码。两外也是按照我的习惯来写的。

    ======================================

    记录出错信息的代码

     1using System;
     2using System.Collections.Generic;
     3using System.Text;
     4
     5namespace JYK.DataAccessLibrary
     6{
     7    public class WriteLog
     8    {
     9        设置出错信息
    33
    34        记录错误日志
    65    }

    66}

    67

    这个对于经常在程序里面使用SQL语句的兄弟们是很实用的,因为它会把出错的SQL语句、出错的描述(ex.Message)、函数名称、出错的时间,写到一个文本文件里面。对于查错是很方便的。存储过程的话帮助不是很大,因为存储过程的出错描述总是让人很晕,记录下来帮助也不是很大。




  • 相关阅读:
    FileWriter简单用法并记录日志
    jquery 替换元素函数
    jquery ajax应用
    jquery 操作对象和集合
    jquery 管理包装元素集合
    jQuery 过滤选择器
    @Html.Action()
    ASP.NET MVC之Html.RenderAction
    MVC5中路由新特性
    MVC5学习整理
  • 原文地址:https://www.cnblogs.com/jyk/p/sqlhelp.html
Copyright © 2011-2022 走看看