在学习牛腩新闻发布系统时候,到目前遇到这些问题在这里做一个小结。有些
很简单,有些是一些技巧,有些则是一些关于优化的积累。在这里与大家分
享。
问题汇总
.在新建的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);