标题: Web C#2.0 DataSet和Reader封装组件实现自动多数据库切换(含组件源码和实例)
- ξ箫音ξ 2007-01-17 14:30 阅读:3580
- 评论:22 查看评论 | 添加评论

WebConf配置:

<?xml version="1.0"?>
<!--
    注意: 除了手动编辑此文件以外,您还可以使用
    Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
     “网站”->“Asp.Net 配置”选项。
    设置和注释的完整列表在
    machine.config.comments 中,该文件通常位于
    \Windows\Microsoft.Net\Framework\v2.x\Config 中
-->
<configuration>
 <appSettings>
  <!--***************** 数据库的设置 *****************
  !— OperatorDataCode:  数据库操作引擎授权码(自动判断域名)
  !— OperatorDataLink:  数据库链接参数(自动判断类型)
  !— Access类型:     /安装目录/Data/数据库名.mdb
  !— SQL Server类型: uid=账号;pwd=密码;database=数据库;server=服务器
 **************************************************-->

  <add key="OperatorDataCode"  value="00000000-00000000"/>
  <!add key="OperatorDataLink"  value="dbAcc.mdb"/>
        <!--add key="OperatorDataLink"  value="uid=sa;pwd=sa;database=dbSQL;server=."/-->

  <!--***********************************************-->
 </appSettings>
 <connectionStrings/>
 <system.web>
  <!--
            设置 compilation debug="true" 将调试符号插入
            已编译的页面中。但由于这会
            影响性能,因此只在开发过程中将此值
            设置为 true。
        -->
  <compilation debug="true"/>
  <!--
            通过 <authentication> 节可以配置 ASP.NET 使用的
            安全身份验证模式,
            以标识传入的用户。
        -->
  <authentication mode="Windows"/>
       
        <customErrors mode="RemoteOnly"/>
  <!--
            如果在执行请求的过程中出现未处理的错误,
            则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
            开发人员通过该节可以配置
            要显示的 html 错误页
            以代替错误堆栈跟踪。

        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
            <error statusCode="403" redirect="NoAccess.htm" />
            <error statusCode="404" redirect="FileNotFound.htm" />
        </customErrors>
        -->
 </system.web>
</configuration>

[图片][图片]/**//* •——————————————————————————•
[图片]   | Title:  智能判断数据源                            |
[图片]   | Project: DBOperatorService.Data                   |
[图片]   | Subarea: DataSet                                  |
[图片]   | Author: ξ箫音ξ                                  |
[图片]   | Website: www.crfly.com;bbs.52happy.net            |
[图片]   | Created date: 01/16/2007                          |
[图片]   | Changed date: 01/17/2007                          |
[图片]   •——————————————————————————• */
[图片]
[图片]using System;
[图片]using System.Configuration;
[图片]using System.Web.UI;
[图片]using DBOperator.Data;
[图片]
[图片]namespace System.Data
[图片][图片][图片]{
[图片]    public class osdData : Page
[图片][图片]    [图片]{
[图片]        // Statics
[图片]        public static string DataLink;
[图片]
[图片]        // Constructors
[图片]        static osdData ()
[图片][图片]        [图片]{
[图片]            osdData.DataLink = ConfigurationManager.AppSettings["OperatorDataLink"];
[图片]        }
[图片]        
[图片]        public osdData ()
[图片][图片]        [图片]{
[图片]        }
[图片]                
[图片]        // Methods
[图片]        public static DataSet DataSet (string sql, int startindex, int num, string dataname)
[图片][图片]        [图片]{
[图片]            if (osdData.DataLink.ToUpper().IndexOf(";SERVER=") != -1)
[图片][图片]            [图片]{
[图片]                return OperatorSql.ExecuteDataSet(sql, startindex, num, dataname);
[图片]            }
[图片]            return OperatorAcc.ExecuteDataSet(sql, startindex, num, dataname);
[图片]        }
[图片]        
[图片]        public static void ExecuteNonQuery (string sql)
[图片][图片]        [图片]{
[图片]            if (osdData.DataLink.ToUpper().IndexOf("SERVER") != -1)
[图片][图片]            [图片]{
[图片]                OperatorSql.ExecuteNonQuery(sql);
[图片]            }
[图片]            else
[图片][图片]            [图片]{
[图片]                OperatorAcc.ExecuteNonQuery(sql);
[图片]            }
[图片]        }
[图片]        
[图片]        public static object Executescalar (string SQL, int i)
[图片][图片]        [图片]{
[图片]            if (osdData.DataLink.ToUpper().IndexOf(";SERVER=") != -1)
[图片][图片]            [图片]{
[图片]                return OperatorSql.ExecuteScalar(SQL, i);
[图片]            }
[图片]            return OperatorAcc.ExecuteScalar(SQL, i);
[图片]        }
[图片]    }
[图片]}
[图片]
[图片]
[图片]using System;
[图片]using System.Data.OleDb;
[图片]using System.Data.SqlClient;
[图片]using System.Reflection;
[图片]using DBOperator.Data;
[图片]
[图片]namespace System.Data
[图片][图片][图片]{
[图片]    //[DefaultMember("Item")]
[图片]    public class osdReader
[图片][图片]    [图片]{
[图片]        // Instance Fields
[图片]        public osdData myData;
[图片]        public OperatorAcc myAcc;
[图片]        public OperatorSql mySql;
[图片]        private OleDbDataReader OleDR;
[图片]        private SqlDataReader SqlDR;
[图片]
[图片]        // Constructors
[图片]        public osdReader (OleDbDataReader dr)
[图片][图片]        [图片]{
[图片]            this.myData = new osdData();
[图片]            this.myAcc = new OperatorAcc();
[图片]            this.mySql = new OperatorSql();
[图片]            if (osdData.DataLink.ToUpper().IndexOf(";SERVER=") == -1)
[图片][图片]            [图片]{
[图片]                this.OleDR = dr;
[图片]            }
[图片]        }
[图片]        
[图片]        public osdReader (SqlDataReader dr)
[图片][图片]        [图片]{
[图片]            this.myData = new osdData();
[图片]            this.myAcc = new OperatorAcc();
[图片]            this.mySql = new OperatorSql();
[图片]            if (osdData.DataLink.ToUpper().IndexOf(";SERVER=") != -1)
[图片][图片]            [图片]{
[图片]                this.SqlDR = dr;
[图片]            }
[图片]        }
[图片]
[图片]        public osdReader(string SQL)
[图片][图片]        [图片]{
[图片]            this.myData = new osdData();
[图片]            this.myAcc = new OperatorAcc();
[图片]            this.mySql = new OperatorSql();
[图片]            if (osdData.DataLink.ToUpper().IndexOf(";SERVER=") != -1)
[图片][图片]            [图片]{
[图片]                OperatorSql.Open();
[图片]                this.SqlDR = new SqlCommand(SQL, OperatorSql.ConnSql).ExecuteReader();
[图片]            }
[图片]            else
[图片][图片]            [图片]{
[图片]                OperatorAcc.Open();
[图片]                this.OleDR = new OleDbCommand(SQL, OperatorAcc.ConnAcc).ExecuteReader();
[图片]            }
[图片]        }
[图片]        
[图片]        
[图片]        // Methods
[图片]        public bool Read ()
[图片][图片]        [图片]{
[图片]            if (osdData.DataLink.ToUpper().IndexOf(";SERVER=") != -1)
[图片][图片]            [图片]{
[图片]                return this.SqlDR.Read();
[图片]            }
[图片]            return this.OleDR.Read();
[图片]        }
[图片]        
[图片]        public void Close ()
查看评论 | 添加评论
返回顶部 | 返回首页