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

     

  • 相关阅读:
    Android(java)学习笔记68:使用proguard混淆android代码
    SGU 194 Reactor Cooling
    关于流量有上下界的网络流问题的求解
    关于最小割的求解方法
    HDU 5311 Hidden String
    POJ 3548 Restoring the digits
    POJ 2062 HDU 1528 ZOJ 2223 Card Game Cheater
    ZOJ 1967 POJ 2570 Fiber Network
    HDU 1969 Pie
    HDU 1956 POJ 1637 Sightseeing tour
  • 原文地址:https://www.cnblogs.com/lilongsheng1125/p/4978595.html
Copyright © 2011-2022 走看看