可移植的数据库

原文发布时间为:2008-08-02 —— 来源于本人的百度文章 [由搬家工具导入]

web.config里面:

<?xml version="1.0"?>
<configuration>
<appSettings>
    <add key="dbType" value="Access"/>
    <!--这里可选值必须是 SqlServer 或者 Access 再或者 Oracle-->
</appSettings>
<connectionStrings>
   <add name="tempConn" connectionString="Data Source=thc\sqlexpress;Initial Catalog=temp;Persist Security Info=True;User ID=thc123_com;Password=thc123_net" providerName="System.Data.SqlClient"/>
   <add name="nameConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\name.mdb;Persist Security Info=True" providerName="System.Data.OleDb"/>
</connectionStrings>

--------------------------------------------------------

fdatatype类

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Data.OleDb;
using System.Data.SqlClient;
//using System.Data.OracleClient; //我机器上没装Oracle,无法给大家演示,但是原理是一样就做出来了

/// <summary>
/// 向应用程序的较高级别隐藏与创建特定类型(来自特定的数据提供程序)的实例有关的细节,应用程序现在可以使用通过基本接口公开的一般行为与数据源进行交互。
/// 天轰穿 www.thc123.com
/// </summary>

namespace SAO
{//定义一个命名空间
    /// <summary>
    /// 移植到的数据库名称集
    /// </summary>
    public enum DataBaseType
    {//申明一个枚举类型的,枚举参数为我们可能会移植到的数据库名称集
        SqlServer,
        Access,
        Oracle
        //。。。其他可能用到的数据库名称
    }
    /// <summary>
    /// 公用参数的类型集
    /// </summary>
    public enum ParameterType
    {//定义一个枚举类型的公用参数的类型集
        Integer,
        Char,
        VarChar
    }
    public class fdatatype
    {
        public fdatatype()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }
        /// <summary>
        /// 创建并初始化Connection连接实例
        /// </summary>
        /// <param name="dbType">数据提供程序类型</param>
        /// <returns>返回一个已经创建好的数据库连接实例</returns>
        public static IDbConnection CreateConnection(DataBaseType dbType)
        {
            IDbConnection con; //申明一个IDbConnection实例
            switch(dbType)
            {//根据枚举值来判断创建啥类型的数据库连接实例
                case DataBaseType.Access:
                    con = new OleDbConnection(ConfigurationManager.ConnectionStrings["nameConn"].ConnectionString);
                    break;
                //case DataBaseType.Oracle:
                //    con = new OracleConnection(ConfigurationManager.ConnectionStrings["OracleConn"].ConnectionString);
                //    break;
                default:
                    con = new SqlConnection(ConfigurationManager.ConnectionStrings["tempConn"].ConnectionString);
                    break;
            }
            return con;
        }
        /// <summary>
        /// 创建并初始化Command实例
        /// </summary>
        /// <param name="QueryString">Sql查询语句或存储过程名称</param>
        /// <param name="dbType">数据提供程序类型</param>
        /// <param name="con">数据库连接实例</param>
        /// <returns>返回一个已经创建好的Command实例对象</returns>
        public static IDbCommand CreateCommand(string QueryString, DataBaseType dbType,IDbConnection con)
        {
            IDbCommand cmd;
            switch(dbType)
            {
                case DataBaseType.Access:
                    cmd = new OleDbCommand(QueryString, (OleDbConnection)con);
                    //注意到(OleDbConnection)con),这一段代表讲参数中的数据库连接实例强制类型转换为XXX类型
                    break;
                //case DataBaseType.Oracle:
                //    cmd = new OracleCommand(QueryString, (OracleConnection)con);
                //    break;
                default:
                    cmd = new SqlCommand(QueryString, (SqlConnection)con);
                    break;
            }
            return cmd;
        }
        /// <summary>
        /// 创建并初始化一个DataAdapter对象
        /// </summary>
        /// <param name="cmd">Command实例对象</param>
        /// <param name="dbType">数据提供程序类型</param>
        /// <returns>返回一个已经创建好的DataAdapter对象</returns>
        public static IDbDataAdapter CreateDataAdapter(IDbCommand cmd, DataBaseType dbType)
        {
            IDbDataAdapter ida;
            switch (dbType)
            {
                case DataBaseType.Access:
                    ida = new OleDbDataAdapter((OleDbCommand)cmd);
                    break;
                //case DataBaseType.Oracle:
                //    ida = new OracleDataAdapter((OracleCommand)cmd);
                //    break;
                default:
                    ida=new SqlDataAdapter((SqlCommand)cmd);
                    break;
            }
            return ida;
        }
    }
}
-----------------------------------------

fdataset类

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace SAO
{
    /// <summary>
    /// 使用我们前面创建的哪个类来与数据库建立连接并获取数据
    /// </summary>
    public class fdataset
    {
        DataBaseType dbType = (DataBaseType)Enum.Parse(typeof(DataBaseType), ConfigurationSettings.AppSettings["dbType"]);
        IDbConnection mycon;
        DataSet ds;

        public fdataset()
        {
            mycon = fdatatype.CreateConnection(dbType);
            ds = new DataSet();
        }
       
        //得到我们在web.config文件中设置的数据库提供程序
        public DataSet Tds()
        {
            IDbCommand mycmd = fdatatype.CreateCommand("select * from name", dbType, mycon);
            IDbDataAdapter myda = fdatatype.CreateDataAdapter(mycmd, dbType);
            myda.Fill(ds);
            return ds;
        }
    }
}

时间: 2024-10-15 05:48:27

可移植的数据库的相关文章

python开发中常用的框架

以下是15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构.以及全功能的管理后台. Diesel:基于Greenlet的事件I/O框架 Diesel提供一个整洁的API来编写

Python著名的lib和开发框架(均为转载)

第一,https://github.com/vinta/awesome-python Awesome Python A curated list of awesome Python frameworks, libraries, software and resources. Inspired by awesome-php. Awesome Python Admin Panels Algorithms and Design Patterns Anti-spam Asset Management A

python 15 种常用框架

以下是伯乐在线从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构.以及全功能的管理后台. Diesel:基于Greenlet的事件I/O框架 Die

python 框架

python -m SimpleHTTPServer 从GitHub中整理出的15个最受欢迎的Python开源框架. 这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构.以及全功能的管理后台. Diesel:基

Python六大开源框架对比:Web2py略胜一筹

http://www.csdn.net/article/2013-08-08/2816494-6-pillars-of-python-assessment-of-best-python-web-frameworks 2.Web2py Web2py是一个用Python语言编写的免费的开源Web框架,旨在敏捷快速的开发Web应用,具有快速.可扩展.安全以及可移植的数据库驱动的应用,遵循LGPLv3开源协议. Web2py提供一站式的解决方案,整个开发过程都可以在浏览器上进行,提供了Web版的在线开发

python入门基础教程02 Python简介

02 Python简介 Python简介 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,属于应用层软件.自从20 世纪90 年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务.自动化运维.图像处理游戏和Web 网站开发等领域.Python已经成为最受欢迎的程序设计语言之一.4.易读以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python教授程序设计课程.例如麻省理工学院的计算机科学及编程导论课程就使用Python语言讲

最受欢迎的15个Python开源框架

GitHub中15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. 1.Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构.以及全功能的管理后台. 2.Diesel:基于Greenlet的事件I/O框架 Diesel提供一个整

Web2py是一个用Python语言编写的免费的开源Web框架

Zope 2是一款基于Python的Web应用框架,是所有Python Web应用程序.工具的鼻祖,是Python家族一个强有力的分支.Zope 2的"对象发布"系统非常适合面向对象开发方法,并且可以减轻开发者的学习曲线,还可以帮助你发现应用程序里一些不好的功能. Web2py是一个用Python语言编写的免费的开源Web框架,旨在敏捷快速的开发Web应用,具有快速.可扩展.安全以及可移植的数据库驱动的应用,遵循LGPLv3开源协议. Web2py提供一站式的解决方案,整个开发过程都可

转载:15个最受欢迎的Python开源框架

出自:http://python.jobbole.com/72306/?replytocom=57112 15个最受欢迎的Python开源框架 Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构.以及全功能的管理后台. Diesel:基于Greenlet的事件I/O框架 Diesel提供