欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【数据访问层的第一种实现:Access+SQL】,下面是详细的分享!
数据访问层的第一种实现:Access+SQL
经过上面篇文章的介绍,整个系统的框架算是基本搭建完了,下面,我们要具体实现各个层次。关于数据访问层的实现,我准备讨论三种实现方式,这一篇文章讨论第一种:Access+动态生成SQL。
顾名思义,这种实现将使用Access作为后台数据库,而操作方式也是最基本的使用SQL命令。
在具体编写实现代码之前,我们需要做一些准备工作:
第一步,我们要将Access数据库搭建完成,具体做法如下。
在Web工程下新建一个文件夹,命名为AccessData,并在其中新建一个mdb文件(即Access数据库文件),按照前面介绍过的数据库设计构架,将数据表及表间关系建好,这里不再赘述。
第二步,我们要进行一些配置。
打开Web工程下的Web.config文件,在其中的appSettings节点下,添加如下键值:
| <add key="AccessConnectionString" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={DBPath}"/> <add key="AccessPath" value="~/AccessData/AccessDatabase.mdb"/> |
第一条为Access的连接字符串,第二条为Access数据库文件的路径,其中“~”表示网站根目录。
第三步,新建一个工程。
我们要新建一个工程AccessDAL,用来存放Access数据访问层的代码。
准备工作做完了,现在来实现具体的代码。
1.编写数据访问助手类
因为很多数据访问操作流程很相似,所以,这里将一些可复用的代码抽取出来,编写成助手类,以此减少代码量,提高代码复用性。
这个助手类放在AccessDAL下,叫AccessDALHelper,主要负责Access数据库的访问。它包括三个方法:
GetConnectionString:从配置文件中读取配置项,组合成连接字符串。
ExecuteSQLNonQuery:执行指定SQL语句,不返回任何值,一般用于Insert,Delete,Update命令。
ExecuteSQLDataReader:执行SQL语句返回查询结果,一般用于Select命令。
具体代码如下:
|
using System; CacheDependency fileDependency=new CacheDependency(HttpContext.Current.Server.MapPath("Web.Config")); return connectionString.Replace("{DBPath}", dbAbsolutePath); /// <summary> for (int i=0; i < parameters.Length; i++) connection.Open(); /// <summary> for (int i=0; i < parameters.Length; i++) connection.Open(); return dataReader; |
using System; AdminInfo admin=new AdminInfo(); return admin; /// <summary> try AdminInfo admin=new AdminInfo(); return admin; /// <summary> try AdminInfo admin=new AdminInfo(); return admin; /// <summary> IList<AdminInfo> adminCollection=new List<AdminInfo>(); adminCollection.Add(admin); return adminCollection;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using NGuestBook.IDAL;
using NGuestBook.Entity;
namespace NGuestBook.AccessDAL
{
public class AdminDAL : IAdminDAL
{
/// <summary>
/// 插入管理员
/// </summary>
/// <param name="admin">管理员实体类</param>
/// <returns>是否成功</returns>
public bool Insert(AdminInfo admin)
{
string SQLCommand="insert into [TAdmin]([Name],[Password]) values(@name,@password)";
OleDbParameter[] parameters={
new OleDbParameter("name",admin.Name),
new OleDbParameter("password",admin.Password)
};
try
{
AccessDALHelper.ExecuteSQLNonQuery(SQLCommand, parameters);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 删除管理员
/// </summary>
/// <param name="id">欲删除的管理员的ID</param>
/// <returns>是否成功</returns>
public bool Delete(int id)
{
string SQLCommand="delete from [TAdmin] where [ID]=@id";
OleDbParameter[] parameters={
new OleDbParameter("id",id)
};
try
{
AccessDALHelper.ExecuteSQLNonQuery(SQLCommand, parameters);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 更新管理员信息
/// </summary>
/// <param name="admin">管理员实体类</param>
/// <returns>是否成功</returns>
public bool Update(AdminInfo admin)
{
string SQLCommand="update [TAdmin] set [Name]=@name,[Password]=@password where [ID]=@id";
OleDbParameter[] parameters={
new OleDbParameter("id",admin.ID),
new OleDbParameter("name",admin.Name),
new OleDbParameter("password",admin.Password)
};
try
{
AccessDALHelper.ExecuteSQLNonQuery(SQLCommand, parameters);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 按ID取得管理员信息
/// </summary>
/// <param name="id">管理员ID</param>
/// <returns>管理员实体类</returns>
public AdminInfo GetByID(int id)
{
string SQLCommand="select * from [TAdmin] where [ID]=@id";
OleDbParameter[] parameters={
new OleDbParameter("id",id)
};
try
{
OleDbDataReader dataReader=AccessDALHelper.ExecuteSQLDataReader(SQLCommand, parameters);
if (!dataReader.HasRows)
{
throw new Exception();
}
dataReader.Read();
admin.ID=(int)dataReader["ID"];
admin.Name=(string)dataReader["Name"];
admin.Password=(string)dataReader["Password"];
}
catch
{
return null;
}
}
/// 按用户名及密码取得管理员信息
/// </summary>
/// <param name="name">用户名</param>
/// <param name="password">密码</param>
/// <returns>管理员实体类,不存在时返回null</returns>
public AdminInfo GetByNameAndPassword(string name, string password)
{
string SQLCommand="select * from [TAdmin] where [Name]=@name and [Password]=@password";
OleDbParameter[] parameters={
new OleDbParameter("name",name),
new OleDbParameter("password",password),
};
{
OleDbDataReader dataReader=AccessDALHelper.ExecuteSQLDataReader(SQLCommand, parameters);
if (!dataReader.HasRows)
{
throw new Exception();
}
dataReader.Read();
admin.ID=(int)dataReader["ID"];
admin.Name=(string)dataReader["Name"];
admin.Password=(string)dataReader["Password"];
}
catch
{
return null;
}
}
/// 按管理员名取得管理员信息
/// </summary>
/// <param name="name">管理员名</param>
/// <returns>管理员实体类</returns>
public AdminInfo GetByName(string name)
{
string SQLCommand="select * from [TAdmin] where [Name]=@name";
OleDbParameter[] parameters={
new OleDbParameter("name",name),
};
{
OleDbDataReader dataReader=AccessDALHelper.ExecuteSQLDataReader(SQLCommand, parameters);
if (!dataReader.HasRows)
{
throw new Exception();
}
dataReader.Read();
admin.ID=(int)dataReader["ID"];
admin.Name=(string)dataReader["Name"];
admin.Password=(string)dataReader["Password"];
}
catch
{
return null;
}
}
/// 取得全部管理员信息
/// </summary>
/// <returns>管理员实体类集合</returns>
public IList<AdminInfo> GetAll()
{
string SQLCommand="select * from [TAdmin]";
try
{
OleDbDataReader dataReader=AccessDALHelper.ExecuteSQLDataReader(SQLCommand, null);
if (!dataReader.HasRows)
{
throw new Exception();
}
int i=0;
while (dataReader.Read())
{
AdminInfo admin=new AdminInfo();
admin.ID=(int)dataReader["ID"];
admin.Name=(string)dataReader["Name"];
admin.Password=(string)dataReader["Password"];
i++;
}
}
catch
{
return null;
}
}
}
}以上所分享的是关于数据访问层的第一种实现:Access+SQL,下面是编辑为你推荐的有价值的用户互动:
相关问题:Access中的“宏”是一种( )1.数据安全机制2.实现某...
答:你还没有入门,宏在ACCESS中是一组可执行的操作,不是代码,应该说是一种事件过程,第一个选1,是一种安全机制。宏在Office中实际上就充当一个可执行字符转换为代码的角色,也就是说office VBA面板中,可以直接把字符串封装作为代码来执行,在of... >>详细
相关问题:三层架构该如何去理解?
答:这一层通常由大型的数据库服务器实现,如Oracle 、Sybase、MS SQl Server等。 ...另外三层架构还可以支持如下功能:Remote Access(远程访问资料),例如可透过Internet... >>详细
相关问题:C#中,我创建了一个类,里面封装了一些数据,我怎...
答:里面是什麼数据? 是方法呢还是属性? 如果是静态类就不用实例化直接调用其中的相关内容 如果不是静态类就要先实例化再调用喽 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
