ASP.NET C# 访问Access、Xml等数据库

  

  1. 简介
    1. 目前主流的数据库是SQL2008 SQL2012了等等,从一开始我们接触的也是这些RDMS数据库管理系统,似乎认为AccessSQL2000等已经没有什么用处,其实,它们用处也非常大。
    2. 比如Access比较轻便、易用,如果你的系统需用不了太多的表以及表之间的关系,或者说数据库表结构设计不是特别复杂,你可以试试用Access数据库。
  1. Office 集成了Access
    1. 这个数据库并不需要我们安装,它集成在了Office 里,我们都知道只要是电脑一般都安装了微软的Office办公软件,如果再给客户部署系统时,就可以不需要安装大的数据库管理软件,会很方便的安装。
  1. 连接例子
    1. 下面是C#连接Access数据库文件的代码,采用了三层结构,其实,很简单只需要引入System.Data.OleDb命名空间即可,其余的地方同连接SQL Server数据库一样。
    1. 代码
      1. //DAL层
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Data;
        using Entity;
        using System.Data.OleDb;
        namespace DAL
        {
            public class ProductDAO
            {
                //调用D层的方法
                public DataTable QueryProductByCa(CagetoryEntity enCagetory)
                {
                    string SQL = "SELECT * FROM Product WHERE CagetoryID=@CaID";
                    //查询参数
                    OleDbParameter[] parms =
                    { 
                        new OleDbParameter("@CaID", enCagetory.ID)
                    };
                    return new SQLHelper().ExecuteQuery(SQL, parms, CommandType.Text);
                }
        
            }
        }
        //SQL层
        
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Data;
        using System.Data.OleDb;
        using System.Data.SqlClient;
        using System.Configuration;
        using System.Configuration.Assemblies;
        
        namespace DAL
        {
            public class SQLHelper
            {
                private OleDbCommand cmd = null;
                private OleDbConnection con = null;
                private OleDbDataReader sdr = null;
                #region 构造方法
                /// <summary>  
                /// 构造函数
                /// </summary>  
                public SQLHelper()
                {   //连接字符串,从配置文件获取
                    string strConn = ConfigurationManager.ConnectionStrings["mydb"].ConnectionString;
                    con = new OleDbConnection(strConn);
                }
                #endregion
        
                #region 获得数据库连接
                /// <summary>  
                /// 获得数据库连接  
                /// </summary>  
                private OleDbConnection GetCnn()
                {
                    if (con.State == ConnectionState.Closed)
                    {
                        con.Open();
                    }
                    return con;
                }
                #endregion
        
                #region 执行带参数的查询命令
                /// <summary>  
                /// 执行带参数的查询命令  
                /// </summary>  
                /// <param name="cmmText">Sql语句或存储过程</param>  
                /// <param name="para">参数集合</param>  
                /// <param name="cmmType">命令类型</param>  
                public DataTable ExecuteQuery(string cmmText, OleDbParameter[] para, CommandType cmmType)
                {
                    DataTable dt = new DataTable();
                    cmd = new OleDbCommand(cmmText, GetCnn());
                    cmd.CommandType = cmmType;
                    cmd.Parameters.AddRange(para);
        
                    using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                    {
                        dt.Load(sdr);
                        return dt;
                    }
                }
                #endregion
        
            }
        }
        

        配置文件连接字符串
      2.   <!--连接数据库字符串-->
          <connectionStrings>
            <!--<add name="ConnectString" connectionString="server=LLS;database=NutProduct;uid=sa;pwd=123456;" providerName="System.Data.SqlClient"/>-->
            <add name="mydb" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Nut.mdb" providerName="System.Data.OleDb"/>
          </connectionStrings>
        说明
      3. App_Data文件,从vs2005版以后是自动加入的一个数据库文件夹,默认在这个文件夹下面的文件对于用户是只读的,当程序发布之后,不可以下载里面的东西,起到保护数据作用。
  1. 设计模式(抽象工厂)
    1. 在连接数据库我们可以利用抽象工厂模式结局更换数据库的问题,不需要过多的修改源码,如果一点也不改也是不现实的,修改也是相对的,尽可能把修改的范围、大小降低到最小即可。
    2. 工厂模式可以把连接数据库的D层换了,我们可以把分别连接SQLAccess数据库的类,编译成DLL文件,当我们再需要换数据库时,只需要在Web.config配置文件里面改变连接字符串。
    3. 连接不通的数据库,它们的本质类都在System.Data命名空间下。System.Data 命名空间提供对表示 ADO.NET 结构的类的访问。
      1. ADO.NET中核心是DataSet类,还有其它一些类、接口,实现对该类的辅助操作,不通的数据源都实现了同一个父抽象类,它们都有一个每个数据提供程序都有相应的 DataAdapter,可用作数据源和 DataSet 之间的桥梁。
      2. 例如:通过使用 System.Data.SqlClient 命名空间(用于 SQL Server 的 .NET Framework 数据提供程序)、System.Data.Odbc 命名空间(用 ODBC 的 .NET Framework 数据提供程序)、System.Data.OleDb 命名空间(用于 OLE DB 的 .NET Framework 数据提供程序)或 System.Data.OracleClient 命名空间(用于 Oracle 的 .NET Framework 数据提供程序),可以访问数据源从而用于 DataSet。
  1. 另外,我们还可以利用XMLExcel等等,保存数据,它们都有自己的优点,需要根据需要进行选择。

 

你可能感兴趣的:(ASP.NET C# 访问Access、Xml等数据库)