读书人

解释一段C#代码 急该如何解决

发布时间: 2012-12-15 15:16:03 作者: rapoo

解释一段C#代码 急!!
/// <summary>
/// 更新一条数据
/// </summary>
public void Update(WebProject.Model.BaseData.Tea_News model)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("update Tea_News set ");
strSql.Append("Title=@Title,");
strSql.Append("ImgUrl=@ImgUrl,");
strSql.Append("Body=@Body,");

strSql.Append(" where NewsID=@NewsID ");
SqlParameter[] parameters = {
new SqlParameter("@NewsID", SqlDbType.Int,4)
)};
parameters[0].Value = model.NewsID;


DbHelperSQL.ExecuteSql(strSql.ToString(),parameters);
}


大体解释以下每个意思 谢谢了

[最优解释]

/// <summary>
/// 更新一条数据
/// </summary>
public void Update(WebProject.Model.BaseData.Tea_News model)
{
/**
用StringBuilder类拼接SQL语句
也可写成 string="update Tea_News set Title=@Title,ImgUrl=@ImgUrl,Body=@Body
where NewsID=@NewsID";
* 参考http://blog.163.com/soli1988_blog/blog/static/1768952722012102813438589/
**/
StringBuilder strSql=new StringBuilder();
strSql.Append("update Tea_News set ");
strSql.Append("Title=@Title,");
strSql.Append("ImgUrl=@ImgUrl,");
strSql.Append("Body=@Body,"); //这里是没有逗号的,错误
strSql.Append(" where NewsID=@NewsID ");

//修改语句,用@NewsID初始化SqlDbType.Int类的新实例
//参考http://www.cnblogs.com/pioneerlc/archive/2011/05/21/2053052.html
SqlParameter[] parameters = {
new SqlParameter ("@NewsID", SqlDbType.Int,4))};
parameters[0].Value = model.NewsID; //model(可参考三层架构)实例中的NewsID字段,

//执行语句
DbHelperSQL.ExecuteSql(strSql.ToString(),parameters);
}

[其他解释]
strSql.Append("Title=@Title,");
我想主要是这句看不懂吧? 我猜可能是想在 html中生成模板吧? 以便以后用replace("@Title","页面标题")替换生成静态页
[其他解释]
StringBuilder 是拼接字符串的。
Append(“xx”) 就是把xx加到后面。
@xx理解成占位符,

new SqlParameter("@NewsID", SqlDbType.Int,4)
)}; 总的指导占位符是什么玩意儿吧 哦 他是int 类型的

parameters[0].Value = model.NewsID; 占位符总的有值吧。 这是给他一个值

很明显 你代码里没有给全。


DbHelperSQL.ExecuteSql(strSql.ToString(),parameters);这就是执行那串sql了,并且告诉了占位符的值。


[其他解释]
前一段是拼接字符串
中间是设置参数
最后一句是执行
[其他解释]
帮顶,来拿分的
[其他解释]
如果没看错,这应该是动软生成的DAL里的代码
传进去的参数是 model
[其他解释]
StringBuilder strSql=new StringBuilder();
strSql.Append("update Tea_News set ");
strSql.Append("Title=@Title,");
strSql.Append("ImgUrl=@ImgUrl,");
strSql.Append("Body=@Body,"); //这里是没有逗号的,错误
strSql.Append(" where NewsID=@NewsID ");


string sql = "update Tea_News set Title=@Title,ImgUrl=@ImgUrl,Body=@Body where NewsID=@NewsID";
SqlParameter[] parameters =
{
new SqlParameter ("@NewsID", model.NewsID)
};
DbHelperSQL.ExecuteSql(sql,parameters);

就是这个意思,这样你懂么?
[其他解释]
stringbuilder拼接一个sql语句,带@的是参数,最后是执行sql
[其他解释]
StringBuilder strSql=new StringBuilder();
strSql.Append("update Tea_News set ");
strSql.Append("Title=@Title,");
strSql.Append("ImgUrl=@ImgUrl,");
strSql.Append("Body=@Body,");

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


这是拼SQL语句


SqlParameter[] parameters = {
new SqlParameter("@NewsID", SqlDbType.Int,4)
)};
parameters[0].Value = model.NewsID;

这是参数式的查询,防SQL注入

[其他解释]
表示完全看不懂
[其他解释]
引用:
StringBuilder strSql=new StringBuilder();
strSql.Append("update Tea_News set ");
strSql.Append("Title=@Title,");
strSql.Append("ImgUrl=@ImgUrl,");
strSql.Append("Body=@Body,");

strSql.Append(" ……

up+
[其他解释]
google "参数化sql",补充下基础知识就明白了。
[其他解释]
拼接SQL语句,传参数。。。
[其他解释]
public void Update(WebProject.Model.BaseData.Tea_News model)
{
StringBuilder strSql=new StringBuilder();
//初始化
strSql.Append("update Tea_News set ");
strSql.Append("Title=@Title,");
strSql.Append("ImgUrl=@ImgUrl,");
strSql.Append("Body=@Body,");

strSql.Append(" where NewsID=@NewsID ");
//添加了一条sql修改语句
SqlParameter[] parameters = {
new SqlParameter("@NewsID", SqlDbType.Int,4)
)};
parameters[0].Value = model.NewsID;
//给@NewsID值
DbHelperSQL.ExecuteSql(strSql.ToString(),parameters);
//执行
}
------其他解决方案--------------------


就是一个SQL语句的查询,采用了参数化的形式,这样可以有效防止SQL注入功击
[其他解释]
各位都解释清楚了。。。。
[其他解释]
+1

引用:
C# code?



123456789101112131415161718192021222324252627

/// <summary> /// 更新一条数据 /// </summary> public void Update(WebProject.Model.BaseData.Tea_News model) { /** ……

[其他解释]
引用:
C# code?



123456789101112131415161718192021222324252627

/// <summary> /// 更新一条数据 /// </summary> public void Update(WebProject.Model.BaseData.Tea_News model) { /** ……

+1
[其他解释]
这参数都不够的?
[其他解释]
引用:
stringbuilder拼接一个sql语句,带@的是参数,最后是执行sql


++
[其他解释]
引用:
StringBuilder strSql=new StringBuilder();
strSql.Append("update Tea_News set ");
strSql.Append("Title=@Title,");
strSql.Append("ImgUrl=@ImgUrl,");
……

++1
[其他解释]
引用:
这样执行确定不报错?好多参数没指定也可以?


++
[其他解释]
这样执行确定不报错?好多参数没指定也可以?
[其他解释]
一句话,参数化更新
[其他解释]
该回复于2012-11-28 14:33:13被管理员删除

读书人网 >asp.net

热点推荐