小结牛腩新闻发布系统遇到的问题


在学习牛腩新闻发布系统时候,到目前遇到这些问题在这里做一个小结。有些

  很简单,有些是一些技巧,有些则是一些关于优化的积累。在这里与大家分

享。


问题汇总


.在新建的web程序中,没有sln文件。


只有新建的winform程序中,才会出现相应的sln文件,这个文件是用于打


开解决方案的。而web程序的sln存在于vs默认的文档下面会找到。打开网


站项目的时候,可用打开网站。


.使用try catch或者 using来关闭数据库连接


: using

 

using (sdr=sqlcmd.ExecuteReader(CommandBehavior .CloseConnection ))
            {
 
                //将查询结果加载到dt对象中
                dt.Load(sdr);          
 
            }
Try catch
           try
            {
             
                //将SQL语句与连接对象传入执行查询对象
                sqlcmd = new SqlCommand(sql,GetConn ());
 
               //执行查询
                sqlcmd.ExecuteNonQuery();
 
               //返回查询结果
                res = sqlcmd.ExecuteNonQuery();
                return res;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
               //判断现行数据连接状态来改变数据库状态
                if (sqlconn.State ==ConnectionState.Open)
                {
 
                    sqlconn.Close();
 
                }
            }              
        }

 


.如何传入sql 参数数组?


//传入参数数组
 
           SqlParameter[] paras =newSqlParameter[]  {
                new SqlParameter("@caName",caName ),
                new SqlParameter("@id",id)


.连续删除表内某个id之间的数据


Delete * from 表名 where id in (id1,id2)

.触发器中的instead of 


Instead of代替删除.例如:需要删除新闻类别的类别同时删除该类别下的新


.但是由于外键的原因是无法删除的.这时候使用关键字 instead of,这样一


来就是在触发器实施删除新闻后再取删除相应的类别,也就是将删除的工作延


后到触发器中.

 

  

.在数据库中使用自增长id,但是发现更新过几次后发现还是随机产生的数字十分没有规律。这是为什么? 


这是由于你每次添加的时候,可能这一次没有添加成功。但是系统也自动记录了一


此添加活动。这样等到你下次添加成功的时候你就会发现为什么自增长的id号会出


现中间“断码”了。这样一来你的id顺序就不是正常的排序了。            


 

.在实体类里新建方法,这样就可以直接调用方法给实体类赋值


///<summary>
    /// 新闻评论实体类
    /// </summary>
    public class CommentEntity
    {
        private string id;
        /// <summary>
        /// 主键,自增长
        /// </summary>
        public string Id
        {
            get { return id; }
            set { id = value; }
        }
 
        private string content;
        /// <summary>
        /// 评论内容
        /// </summary>
        public string Content
        {
            get { return content; }
            set { content = value; }
        }
 
        private string userIp;
        /// <summary>
       /// 评论人Ip
        /// </summary>
        public string UserIp
        {
            get { return userIp; }
            set { userIp = value; }
        }
 
 
        private string createTime;
        /// <summary>
        /// 评论发表时间
        /// </summary>
        public string CreateTime
        {
            get { return createTime; }
            set { createTime = value; }
        }
 
 
        private string newsId;
        /// <summary>
       /// 所属新闻ID
        /// </summary>
        public string NewsId
        {
            get { return newsId; }
            set { newsId = value; }
        }
 
 
        public CommentEntity()
        { }
        /// <summary>
        /// 使用方法来给这个实体类赋值
        /// </summary>
       /// <param name="content">评论内容</param>
       /// <param name="userip">评论者Ip</param>
       /// <param name="newid">新闻id</param>
        public CommentEntity(stringcontent,string userip,string newid )
        {
            //给commentEntity类下面的content属性赋值
            this.content = content;
            //给commentEntity类下面的userIp属性赋值
            this.userIp = userip;
            //给commentEntity类下面的NewsId属性赋值
            this.NewsId = newid;
        }
 
    }


 

.如何在在数据库中使数据升序或者降序排列


SELECT * FROM comment WHERE newsId =3 order by createTime asc /desc

 

.注释中的todo的作用


这样可以以此来表名没有完成编写的类,点击-视图-任务列表,我们可以看到


我们还没有完成的代码。


.如何向带有参数的存储过程传入参数


1.首先需要在sqlhelper里面建立一个可以传参的方法,也就是说需要至少三个


参数(存储过程名,参数组,执行的类型(以此来判断是存储过程还是SQL语句))



2.第二个在b层调用的时候,需要首先定义存储过程名string类型


定义参数利用

Sqlparameterparas =new sqlparameter[]

{

New sqlparameter("@参数名",实际的值)

};

3.d层最重要的是


//传入parameter参数组

             sqlcmd.Parameters.AddRange(paras);

以此来传入数组



.两种方式来执行sqlcmd,需要执行的sql与连接对象

1.
Sqlcmd.connection =sqlconn;
Sqlcmd.commandtext=sql;
2.
Sqlcmd=new sqlcommand(sql,sqlconn);



你可能感兴趣的:(问题积累)