- 简介
- 目前主流的数据库是SQL2008 、SQL2012了等等,从一开始我们接触的也是这些RDMS数据库管理系统,似乎认为Access、SQL2000等已经没有什么用处,其实,它们用处也非常大。
- 比如Access比较轻便、易用,如果你的系统需用不了太多的表以及表之间的关系,或者说数据库表结构设计不是特别复杂,你可以试试用Access数据库。
- Office
集成了Access
- 这个数据库并不需要我们安装,它集成在了Office 里,我们都知道只要是电脑一般都安装了微软的Office办公软件,如果再给客户部署系统时,就可以不需要安装大的数据库管理软件,会很方便的安装。
- 连接例子
- 下面是C#连接Access数据库文件的代码,采用了三层结构,其实,很简单只需要引入System.Data.OleDb命名空间即可,其余的地方同连接SQL Server数据库一样。
- 代码
//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 } }
配置文件连接字符串<!--连接数据库字符串--> <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>
说明- App_Data文件,从vs2005版以后是自动加入的一个数据库文件夹,默认在这个文件夹下面的文件对于用户是只读的,当程序发布之后,不可以下载里面的东西,起到保护数据作用。
- 设计模式(抽象工厂)
- 在连接数据库我们可以利用抽象工厂模式结局更换数据库的问题,不需要过多的修改源码,如果一点也不改也是不现实的,修改也是相对的,尽可能把修改的范围、大小降低到最小即可。
- 工厂模式可以把连接数据库的D层换了,我们可以把分别连接SQL、Access数据库的类,编译成DLL文件,当我们再需要换数据库时,只需要在Web.config配置文件里面改变连接字符串。
- 连接不通的数据库,它们的本质类都在System.Data命名空间下。System.Data
命名空间提供对表示 ADO.NET 结构的类的访问。
- ADO.NET中核心是DataSet类,还有其它一些类、接口,实现对该类的辅助操作,不通的数据源都实现了同一个父抽象类,它们都有一个每个数据提供程序都有相应的 DataAdapter,可用作数据源和 DataSet 之间的桥梁。
- 例如:通过使用 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。
- 另外,我们还可以利用XML、Excel等等,保存数据,它们都有自己的优点,需要根据需要进行选择。