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