弱弱问题,SqlParameter 的主要作用是什么啊?

lzt7 2007-03-20 04:35:15
StringBuilder strSql = new StringBuilder();
strSql.Append("select * from WS_Class");
strSql.Append(" where ClassID= @ClassID");
SqlParameter[] parameters = {new SqlParameter("@ClassID", SqlDbType.Int,4)};
parameters[0].Value = ClassID;
return DbHelperSQL.Exists(strSql.ToString(), parameters);

这一句我老是看不明白
1,SqlParameter参数的作用是用来做什么的???
2,new SqlParameter("@ClassID", SqlDbType.Int,4)这句,@ClassID 是什么意思
3,parameters[0].Value = ClassID;这句,ClassID是数据库中的字段吗?
4,这里SqlParameter参数为什么只需定义ClassID?其他字段不需要定义吗?
...全文
2071 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
听听你好 2012-08-04
  • 打赏
  • 举报
回复
受教了啊
mao713 2010-04-13
  • 打赏
  • 举报
回复
嗯不错明白了……
wkq497183809 2010-04-13
  • 打赏
  • 举报
回复
本人也懂了 谢谢
yn136071 2008-11-12
  • 打赏
  • 举报
回复
本人也受教了,谢谢。
guozhiyi 2007-03-21
  • 打赏
  • 举报
回复
1,SqlParameter参数的作用是用来做什么的???
2,new SqlParameter("@ClassID", SqlDbType.Int,4)这句,@ClassID 是什么意思
3,parameters[0].Value = ClassID;这句,ClassID是数据库中的字段吗?
4,这里SqlParameter参数为什么只需定义ClassID?其他字段不需要定义吗?

问题一: 这个里面的参数是你在查询时要用到的参数,就是你存储过程里要用到的条件
问题二: @ClassID存储过程里的参数
问题三: ClassID不是数据库里的字段,要传到存储过程里才是的
问题四: 因为这个存储过程里的查询语句只有一个条件
lzt7 2007-03-21
  • 打赏
  • 举报
回复
oh,终于完全明白了..谢谢各位大虾....
lzt7 2007-03-21
  • 打赏
  • 举报
回复
纯出过趁 是什么来的啊?
wsxqaz 2007-03-21
  • 打赏
  • 举报
回复
我说过你就这么想SqlParameter("@ClassID", SqlDbType.Int,4)就是将这个sql语句或者纯出过趁里的@ClassID替换为ClassID的值
lzt7 2007-03-21
  • 打赏
  • 举报
回复
问题三: ClassID不是数据库里的字段,要传到存储过程里才是的

那么未传到存储过程前是什么?
leixueqiyi 2007-03-21
  • 打赏
  • 举报
回复
SqlParameterCollection 仅接受非空的 SqlParameter 类型对象,不接受 SqlParameter[] 对象,主要是varchar类型的字段,如果使用默认长度,但默认长度大于表中字段长度或者默认长度小于赋值变量的长度,都会截断那些多余的字符的。
devil_hunter 2007-03-20
  • 打赏
  • 举报
回复
而且你写出来的没有用的,用一个select * 就可以了,除非你要考虑性能的一点点差异
devil_hunter 2007-03-20
  • 打赏
  • 举报
回复
这里是查询,一般都是依据主键来查的,哪里要写那么多
wsxqaz 2007-03-20
  • 打赏
  • 举报
回复
定义参数,比如存储过程的参数,你也可以简单的将他理解为替换标志位
lzt7 2007-03-20
  • 打赏
  • 举报
回复
那如果我sql改成:
strSql.Append("select [ClassID],[ChannelID],[ClassName],[ClassType],[OpenType],[ParentID],[ParentPath],[Depth],[RootID],[Child],[arrChildID],[PrevID],[NextID],[OrderID],[Tips],[Readme],[Meta_Keywords],[Meta_Description],[LinkUrl],[ClassPicUrl],[ClassDir],[ParentDir],[SkinID],[TemplateID],[ShowOnTop],[ShowOnIndex],[IsElite],[EnableAdd],[EnableProtect],[MaxPerPage],[DefaultItemTemplate],[DefaultItemSkin],[ItemListOrderType],[ItemOpenType],[ItemCount],[ClassPurview],[EnableComment],[CheckComment],[PresentExp],[DefaultItemPoint],[DefaultItemChargeType],[DefaultItemPitchTime],[DefaultItemReadTimes],[DefaultItemDividePercent],[Custom_Content],[CommandClassPoint],[ReleaseClassPoint] ");

strSql.Append(" FROM WS_Class ");

那么SqlParameter 是不是要所有都写进去啊???
devil_hunter 2007-03-20
  • 打赏
  • 举报
回复
看错了,不是SP,但也是同样的意思
devil_hunter 2007-03-20
  • 打赏
  • 举报
回复
1,2,3:
这里是执行存储过程,@ClassID是存储过程的参数

4:这里SqlParameter参数为什么只需定义ClassID?

应为此SP只有这个参数

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧