• 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等等,保存数据,它们都有自己的优点,需要根据需要进行选择。

     

  • 相关阅读:
    linux advancing program signal [copy]
    advacing lnux program zombie process [copy]
    Devpress.XtraGrid.GridControl 笔记(转载)
    嵌入别的程序到winform(C#)
    GridControl控件使用小结
    .net 时间类型的一小bug ToShortDateString()
    gridControl repositoryItemLookUpEdit控件使用
    .net架构的最后思考(箴言)
    VS项目引用,无法更新
    关于ZendOptimizer和wamp的phpmyadmin冲突问题
  • 原文地址:https://www.cnblogs.com/lilongsheng1125/p/4978595.html
Copyright © 2020-2023  润新知