牛腩新闻发布系统系列一------之整体把控

5 篇文章 1 订阅
4 篇文章 0 订阅

介绍

牛腩新闻发布系统,是前后台分离的,一个将Sql server, asp.net,c#,jQuery,以及三层架构的小型系统,在这一项目中,我们从无到有,从设计说明书开始到最后的打包,发布.我们实现了一般新闻系统的基本功能

摘要

这一项目中,收获颇多,下面我将对下面几个方面进行总结<

1三层结构
三层结构是将UI层,业务逻辑层,数据访问层独立起来的一种模式架构,以至于显示工作中我们能够独立开发各自模块.

DAL(数据访问层)

数据库访问:
业务逻辑最重要的就是与数据库进行访问,访问数据库的核心代码段有如下:
–创建数据源:
SqlConnection conn = new SqlConnection();
创立连接(能够指定具体的数据从哪里来)
conn.ConnectionString = “data source = (local);initial catalog = test; user id = sa;password = sa”;

-建立与数据源相对应的命令对象
sqlcomment cmd=conn.CreateCommand();

-加入要执行的sql语句:
String sql = “这里是要执行的sql语句 “;(由于sql语句容易错,且需要对数据库操作,所以建议在数据库中用查询试好,直接复制来用)
cmd.commandText=sql;

–执行cmd 命令
cmd.ExecuteNonQuery();
通过using 语句,能够不必代码释放空间完整代码如下:

using (SqlConnection conn = new SqlConnection(DBUtil.ConnString))
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = @”SELECT ID,UserName,PassWord,Email
FROM USERS WHERE UserName = @UserName AND Password= @ Password”;
//sql 文本
//这里叫做声明变量,也就是上边cmd 语句中用到的变量.
cmd.Parameters.Add(new SqlParameter(“@UserName”, userName));
cmd.Parameters.Add(new SqlParameter(“@PassWord”,passWord ));
cmd.ExecuteNonQuery();

}
创建SQLHelper类

SQLHelper类是为了便于数据访问,同时对相同代码段提取实现代码复用的效果.,由于通常情况下我们不太明确BLL与DAL的界限,一般情况下我们有俩中方式,体现在SQlHelper 类中,如下:

–传入sql语句的方式(将增,删,改能够整合)
public int ExecuteNonQuery(string sql, CommandType ct)
{
//连接字符串
string conStr = @”server=.;database=newssystem;uid=sa;pwd=123456”;
using (SqlConnection conn = new SqlConnection(conStr))
{
conn.Open();

            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = sql;
            cmd.CommandType =ct;
            int res = cmd.ExecuteNonQuery();//返回受影响行数
            return res;

        }
    }

查询:
public DataTable ExecuteQuery(string sql,CommandType ct)
{
//dt 作为一个容器,接受一起table
DataTable dt = new DataTable();
string conStr = @”server=.;database=newssystem;uid=sa;pwd=123456”;
using (SqlConnection conn = new SqlConnection(conStr))
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
cmd.CommandType = ct;
// sqlDataReader 是只读查询,将结果放入了sdr,是只读查询
SqlDataReader sdr= cmd.ExecuteReader ();
dt.Load(sdr);
}
return dt;
}

–不带sql语句,直接传入参数(由于增删改的sql语句不一样,所以这三个不能整合到一起,但是三个函数相同的代码可以整合)
举例:
public LoginModel SelectUser(string userName, string passWord)
{
using (SqlConnection conn = new SqlConnection(connstr.ConnString))
{//ConnString在外边已经定义,是一个string 常量
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = @”SELECT ID,UserName,PassWord,Email
FROM USERS WHERE UserName = @UserName AND Password=@Password”;
//sql 文本
//这里叫做声明变量,也就是上边cmd 语句中用到的变量.
cmd.Parameters.Add(new SqlParameter(“@UserName”, userName));
cmd.Parameters.Add(new SqlParameter(“@PassWord”,passWord ));
SqlDataReader reader = cmd.ExecuteReader();//提供只读,单向的数据传输
LoginModel.UserInfo user = null;//构造业务数据模型

            while (reader.Read ())//读完全部记录
            {
                if (user ==null )
                {
                    user = new LoginModel.UserInfo();
                }
                user.ID1 = reader.GetInt32(0);
                user.UserName1 = reader.GetString(1);
                user.Password1 = reader.GetString(2);
                if (!reader.IsDBNull (3))
                {
                    user.Email1 = reader.GetString(3);                      
                }
            }
            return user;
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值