惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
V
V2EX
博客园 - 【当耐特】
Vercel News
Vercel News
雷峰网
雷峰网
爱范儿
爱范儿
WordPress大学
WordPress大学
云风的 BLOG
云风的 BLOG
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Azure Blog
Microsoft Azure Blog
F
Full Disclosure
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog
NISL@THU
NISL@THU
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Attack and Defense Labs
Attack and Defense Labs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Microsoft Security Blog
Microsoft Security Blog
腾讯CDC
P
Proofpoint News Feed
B
Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
K
Kaspersky official blog
I
InfoQ
Google Online Security Blog
Google Online Security Blog
L
LINUX DO - 最新话题
Project Zero
Project Zero
Engineering at Meta
Engineering at Meta
V
Visual Studio Blog
AI
AI
Schneier on Security
Schneier on Security
B
Blog RSS Feed
T
Tor Project blog
H
Help Net Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
LINUX DO - 热门话题
阮一峰的网络日志
阮一峰的网络日志
S
Security @ Cisco Blogs
T
Threat Research - Cisco Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
C
Cyber Attacks, Cyber Crime and Cyber Security
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
V2EX - 技术
V2EX - 技术
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
A
Arctic Wolf
Webroot Blog
Webroot Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main

博客园 - 似水流年-johnhuo

架构师向左,项目经理向右?? 今天迈出第一步,开始了解iphone开发 学习objective-c的一些特殊的地方 信息发布系统 Jquery+MVC架构开发(8)DAL层的补充 信息发布系统 Jquery+MVC架构开发(7) Controller层 . 信息发布系统 Jquery+MVC架构开发(6)BLL层提供WCF 服务 . 信息发布系统 Jquery+MVC架构开发(4) Model 层 . 信息发布系统 Jquery+MVC架构开发(3) 解决方案创建 信息发布系统 Jquery+MVC架构开发(2) 在EA下进行数据库设计 信息发布系统 Jquery+MVC架构开发(1) 需求分析和架构构思 c# 设计模式(三)行为型 c# 设计模式(二)结构型 c# 设计模式(一)创建型 .NET平台上的Model-View-Presenter模式实践 关于cmmi的一些理解及资料 iphone 开发学习 C语言指针总结 Android 开发网站,记录一下 使用 TRY/CATCH 语句解决 SQL Server 2005 死锁
信息发布系统 Jquery+MVC架构开发(5) DAL层
似水流年-johnhuo · 2011-07-24 · via 博客园 - 似水流年-johnhuo

跟model层一样,我们同样可以用动软代码生成器来生成DAL层。

这一层主要是数据库的访问,不再多介绍.

需要说明的是我们要把微软的SqlHelper类引入我们的项目,这样我们访问数据库用这个类就够了,关于这个类大伙可以参见微软petshop中的SqlHelper类。

1.  首先定义接口

我们创建三个接口:

1)  IInfo

InfoResult Add(Info info);
InfoResult Update(Info info);
InfoResult Delete(int infoId);
InfoList GetInfoList(SearchInfo searchInfo);
InfoList GetInfoById(int infoId);

2)  IInfoType
跟上面相同,不再赘述。

3)  IUserInfo
跟上面相同,不再赘述。

2.实现这些接口,总结完毕后,我会把代码上传上来,现在暂时把有一部分代码放到这里

     于InfoDal为例:

using System;

using System.Collections.Generic;

using System.Data;

using System.Data.SqlClient;

using System.Linq;

using System.Text;

using InfoPub.Modal;

namespace InfoPub.DAL

{

    public class InfoDal:IInfo

    {

        public InfoResult Add(Info model)

        {

            InfoResult infoResult = new InfoResult();

            StringBuilder strSql = new StringBuilder();

            try

            {

                strSql.Append("insert into Info(");

                strSql.Append("InfoId,infoname,InfoContent,TypeId,PictureUrl,CreateId,CreateDate,ModifyDate,AttachMentUrl,IsTop)");

                strSql.Append(" values (");

                strSql.Append("@InfoId,@infoname,@InfoContent,@TypeId,@PictureUrl,@CreateId,@CreateDate,@ModifyDate,@AttachMentUrl,@IsTop)");

                SqlParameter[] parameters = {

                                               new SqlParameter("@InfoId", SqlDbType.Int,4),

                                               new SqlParameter("@infoname", SqlDbType.NVarChar,200),

                                               new SqlParameter("@InfoContent", SqlDbType.Text),

                                               new SqlParameter("@TypeId", SqlDbType.Int,4),

                                               new SqlParameter("@PictureUrl", SqlDbType.NVarChar,4000),

                                               new SqlParameter("@CreateId", SqlDbType.Int,4),

                                               new SqlParameter("@CreateDate", SqlDbType.DateTime),

                                               new SqlParameter("@ModifyDate", SqlDbType.DateTime),

                                               new SqlParameter("@AttachMentUrl", SqlDbType.NVarChar,4000),

                                               new SqlParameter("@IsTop", SqlDbType.TinyInt,1)};

                parameters[0].Value = model.InfoId;

                parameters[1].Value = model.Infoname;

                parameters[2].Value = model.InfoContent;

                parameters[3].Value = model.TypeId;

                parameters[4].Value = model.PictureUrl;

                parameters[5].Value = model.CreateId;

                parameters[6].Value = model.CreateDate;

                parameters[7].Value = model.ModifyDate;

                parameters[8].Value = model.AttachMentUrl;

                parameters[9].Value = model.IsTop;

                SqlHelper.ExecuteNonQuery(CommandType.Text, strSql.ToString(), parameters);

                infoResult.Code = 0;

            }

            catch (Exception ex)

            {

                infoResult.Code = 100;

                infoResult.Message = ex.Message + ex.StackTrace + ex.InnerException;

            }

            return infoResult;

        }

        public InfoResult Update(Info model)

        {

            InfoResult infoResult = new InfoResult();

            StringBuilder strSql = new StringBuilder();

            try

            {

                strSql.Append("update Info set ");

                strSql.Append("infoname=@infoname,");

                strSql.Append("InfoContent=@InfoContent,");

                strSql.Append("TypeId=@TypeId,");

                strSql.Append("PictureUrl=@PictureUrl,");

                strSql.Append("CreateId=@CreateId,");

                strSql.Append("CreateDate=@CreateDate,");

                strSql.Append("ModifyDate=@ModifyDate,");

                strSql.Append("AttachMentUrl=@AttachMentUrl,");

                strSql.Append("IsTop=@IsTop");

                strSql.Append(" where InfoId=@InfoId ");

                SqlParameter[] parameters = {

                                               new SqlParameter("@infoname", SqlDbType.NVarChar,200),

                                               new SqlParameter("@InfoContent", SqlDbType.Text),

                                               new SqlParameter("@TypeId", SqlDbType.Int,4),

                                               new SqlParameter("@PictureUrl", SqlDbType.NVarChar,4000),

                                               new SqlParameter("@CreateId", SqlDbType.Int,4),

                                               new SqlParameter("@CreateDate", SqlDbType.DateTime),

                                               new SqlParameter("@ModifyDate", SqlDbType.DateTime),

                                               new SqlParameter("@AttachMentUrl", SqlDbType.NVarChar,4000),

                                               new SqlParameter("@IsTop", SqlDbType.TinyInt,1),

                                               new SqlParameter("@InfoId", SqlDbType.Int,4)};

                parameters[0].Value = model.Infoname;

                parameters[1].Value = model.InfoContent;

                parameters[2].Value = model.TypeId;

                parameters[3].Value = model.PictureUrl;

                parameters[4].Value = model.CreateId;

                parameters[5].Value = model.CreateDate;

                parameters[6].Value = model.ModifyDate;

                parameters[7].Value = model.AttachMentUrl;

                parameters[8].Value = model.IsTop;

                parameters[9].Value = model.InfoId;

                SqlHelper.ExecuteNonQuery(CommandType.Text, strSql.ToString(), parameters);

                infoResult.Code = 0;

            }

            catch (Exception ex)

            {

                infoResult.Code = 100;

                infoResult.Message = ex.Message + ex.StackTrace + ex.InnerException;

            }

            return infoResult;

        }

        public InfoResult Delete(int infoId)

        {

            InfoResult infoResult = new InfoResult();

            StringBuilder strSql = new StringBuilder();

            try

            {

                strSql.Append("delete from Info ");

                strSql.Append(" where InfoId=@InfoId ");

                SqlParameter[] parameters = {

                                               new SqlParameter("@InfoId", SqlDbType.Int,4)};

                parameters[0].Value = infoId;

                SqlHelper.ExecuteNonQuery(CommandType.Text, strSql.ToString(), parameters);

                infoResult.Code = 0;

            }

            catch (Exception ex)

            {

                infoResult.Code = 100;

                infoResult.Message = ex.Message + ex.StackTrace + ex.InnerException;

            }

            return infoResult;

        }

        // SearchInfo是自定义的查询类

        public InfoList GetInfoList(SearchInfo searchInfo)

        {

            InfoList infoList=new InfoList();

            StringBuilder strSql = new StringBuilder();

            StringBuilder strwhere=new StringBuilder();

            if (!string.IsNullOrEmpty(searchInfo.Infoname))

            {

                strwhere.Append((string.IsNullOrEmpty(strwhere.ToString()) ? "where " : " and ") + @"infoname like '%'+@infoname+'%' ");

            }

            if (searchInfo.BeginDate != Convert.ToDateTime("0001/1/1") || searchInfo.EndDate != Convert.ToDateTime("0001/1/1"))

            {

                strwhere.Append((string.IsNullOrEmpty(strwhere.ToString()) ? "where " : " and ") + @"CreateDate between @startdate and @enddate ");

            }

            try

            {

                strSql.Append(@" SELECT count(1) as maxcount from Info " + strwhere.ToString() + "; ");

                strSql.Append(@" WITH Row AS

                                      (SELECT ROW_NUMBER() OVER(ORDER BY InfoId) AS rownumber, InfoId FROM Info (NOLOCK) "

                                            + strwhere.ToString() + ") ");

                strSql.Append("select InfoId,infoname,InfoContent,TypeId,PictureUrl,CreateId,CreateDate,ModifyDate,AttachMentUrl,IsTop from Info inner join Row on Info.InfoId=Row.InfoId WHERE rownumber BETWEEN @StartNum AND @StartNum + @pageSize - 1 ");

                SqlParameter[] parameters = {

                                               new SqlParameter("@infoname", SqlDbType.NVarChar,200),

                                               new SqlParameter("@startdate", SqlDbType.DateTime),

                    new SqlParameter("@enddate", SqlDbType.DateTime),

                    new SqlParameter("@StartNum",SqlDbType.Int),

                    new SqlParameter("@pageSize",SqlDbType.Int)};

                parameters[0].Value = searchInfo.Infoname;

                parameters[1].Value = searchInfo.BeginDate;

                parameters[2].Value = searchInfo.EndDate;

                parameters[3].Value = searchInfo.pageInfo.startNum;

                parameters[4].Value = searchInfo.pageInfo.pageSize;

                using (IDataReader dataReader = SqlHelper.ExecuteReader(CommandType.Text, strSql.ToString(), parameters))

                {

                    if (dataReader.Read())

                    {

                        PageInfo pageInfo=new PageInfo();

                        pageInfo.Max = dataReader.GetInt32(0);

                        if (dataReader.NextResult())

                        {

                            while (dataReader.Read())

                            {

                                Info info=new Info();

                                info = PopulateInfoEntityFromDr(dataReader);

                                infoList.infoList.Add(info);

                            }

                        }

                        infoList.infoResult.Code = 0;

                    }

                    else

                    {

                        infoList.infoResult.Code = 101;

                        infoList.infoResult.Message = "没?找¨°到Ì?相¨¤关?联¢a的Ì?信?息¡é!ê?";

                    }

                }

            }

            catch (Exception ex)

            {

                infoList.infoResult.Code = 100;

                infoList.infoResult.Message = ex.Message + ex.StackTrace + ex.InnerException;

            }

            return infoList;

        }

        public InfoList GetInfoById(int infoId)

        {

            InfoList infoList = new InfoList();

            StringBuilder strSql = new StringBuilder();

            try

            {

                strSql.Append("select InfoId,infoname,InfoContent,TypeId,PictureUrl,CreateId,CreateDate,ModifyDate,AttachMentUrl,IsTop from Info ");

                strSql.Append(" where InfoId=@InfoId ");

                SqlParameter[] parameters = {

                                               new SqlParameter("@InfoId", SqlDbType.Int,4)};

                parameters[0].Value = infoId;

                using (IDataReader dataReader = SqlHelper.ExecuteReader(CommandType.Text, strSql.ToString(), parameters))

                {

                    if (dataReader.Read())

                    {

                        Info info=new Info();

                        info = PopulateInfoEntityFromDr(dataReader);

                        infoList.infoList.Add(info);

                        infoList.infoResult.Code = 0;

                    }

                    else

                    {

                        infoList.infoResult.Code = 101;

                        infoList.infoResult.Message = "没?找¨°到Ì?相¨¤关?联¢a的Ì?信?息¡é!ê?";

                    }

                }

            }

            catch (Exception ex)

            {

                infoList.infoResult.Code = 100;

                infoList.infoResult.Message = ex.Message + ex.StackTrace + ex.InnerException;

            }

            return infoList;

        }

        /// <summary>

        /// 得Ì?到Ì?  info 数ºy据Y实º¦Ì体¬?

        /// </summary>

        /// <param name="dr">dr</param>

        /// <returns>info 数ºy据Y实º¦Ì体¬?</returns>

        public Info PopulateInfoEntityFromDr(IDataReader dr)

        {

            Info Obj = new Info();

            Obj.InfoId = ((dr["InfoId"]) == DBNull.Value) ? 0 : Convert.ToInt32(dr["InfoId"]);

            Obj.Infoname = dr["infoname"].ToString();

            Obj.InfoContent = dr["InfoContent"].ToString();

            Obj.TypeId = ((dr["TypeId"]) == DBNull.Value) ? 0 : Convert.ToInt32(dr["TypeId"]);

            Obj.PictureUrl = dr["PictureUrl"].ToString();

            Obj.CreateId = ((dr["CreateId"]) == DBNull.Value) ? 0 : Convert.ToInt32(dr["CreateId"]);

            Obj.CreateDate = ((dr["CreateDate"]) == DBNull.Value) ? Convert.ToDateTime(1900 - 1 - 1) : Convert.ToDateTime(dr["CreateDate"]);

            Obj.ModifyDate = ((dr["ModifyDate"]) == DBNull.Value) ? Convert.ToDateTime(1900 - 1 - 1) : Convert.ToDateTime(dr["ModifyDate"]);

            Obj.AttachMentUrl = dr["AttachMentUrl"].ToString();

            Obj.IsTop = ((dr["IsTop"]) == DBNull.Value) ? Convert.ToByte(0) : Convert.ToByte(dr["IsTop"]);

            return Obj;

        }

    }

}