为什么没有执行while里面的代码 直接执行return list呢,三个参数的值都获取到了 谁帮解决下 谢谢啊 在线求解~

frank2828 2012-05-09 08:52:59
/// <summary>
/// 产品分页展示根据ClassName
/// </summary>
/// <param name="pagesize">每页显示多少条</param>
/// <param name="pageindex">当前第几页</param>
/// <returns>返回List<prod_news>集合</returns>
public List<prod_news> ProductFenYeByClassName(int pagesize, int pageindex,string className)
{
try
{
int num = pagesize * pageindex;
string sqlStr = "select top 12 * from prod_news where ID not in (select top " + num + " ID from prod_news order by infotime desc) and ClassName="+className+" order by infotime desc";
OleDbCommand cmd = new OleDbCommand(sqlStr, con);
OleDbParameter par1 = new OleDbParameter("@pagesize", OleDbType.Integer);
OleDbParameter par2 = new OleDbParameter("@pageindex", OleDbType.Integer);
OleDbParameter par3=new OleDbParameter("@ClassName",OleDbType.VarChar);
par1.Value = pagesize;
par2.Value = pageindex;
par3.Value=className;
cmd.Parameters.Add(par1);
cmd.Parameters.Add(par2);
cmd.Parameters.Add(par3);
List<prod_news> list = new List<prod_news>();
con.Open();
OleDbDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
prod_news prod_news = new prod_news();
prod_news.ID = Convert.ToInt32(reader["ID"]);
prod_news.title = reader["title"].ToString();
prod_news.content = reader["content"].ToString();
prod_news.ClassName = reader["ClassName"].ToString();
prod_news.img = reader["img"].ToString();
prod_news.okay2 = Convert.ToInt32(reader["okay2"]);
prod_news.okay = Convert.ToInt32(reader["okay"]);
prod_news.infotime = Convert.ToDateTime(reader["infotime"]);
prod_news.hits = Convert.ToInt32(reader["hits"]);
prod_news.ok = Convert.ToBoolean(reader["ok"]);
list.Add(prod_news);
}
return list;
}
catch (Exception ec)
{
throw ec;
}
finally
{
con.Close();
}
}


为什么没有执行while里面的代码 直接执行return list呢,三个参数的值都获取到了 谁帮解决下 谢谢啊 在线求解~
...全文
77 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
facelessvoidhj 2012-05-09
  • 打赏
  • 举报
回复
OleDbParameter par1 = new OleDbParameter("@pagesize", OleDbType.Integer);
OleDbParameter par2 = new OleDbParameter("@pageindex", OleDbType.Integer);
OleDbParameter par3=new OleDbParameter("@ClassName",OleDbType.VarChar);
par1.Value = pagesize;
par2.Value = pageindex;
par3.Value=className;
cmd.Parameters.Add(par1);
cmd.Parameters.Add(par2);
cmd.Parameters.Add(par3);
整个注释掉试试
frank2828 2012-05-09
  • 打赏
  • 举报
回复
int num = pagesize * pageindex;头两个参数和成一个查询没问题的 ,就是第三个参数的问题
frank2828 2012-05-09
  • 打赏
  • 举报
回复
int num = pagesize * pageindex;
这个不是吗 我吧传入的2个参数给合成一个了,这样不行吗 我在ACCESS里试过了
select top 12 * from prod_news where ID not in (select top 12 ID from prod_news order by infotime desc) and ClassName=‘检验分析纯水设备’ order by infotime desc
我把ClassName=‘检验分析纯水设备’改成ClassName="检验分析纯水设备"就有结果了 可是 在传入ClassName参数时怎么写才对呢 ~~~
facelessvoidhj 2012-05-09
  • 打赏
  • 举报
回复
而且如6楼所说,你写的SQL没有用到参数啊,你的本意是这样吧
string sqlStr = "select top @pagesize * from prod_news where ID not in (select top @pageindex ID from prod_news order by infotime desc) and ClassName=@ClassName order by infotime desc";
facelessvoidhj 2012-05-09
  • 打赏
  • 举报
回复
我也接触不多,之前用过一次,好像在“创建”菜单下面 有个什么“查询设计”之类的,你可以自己试试
kke_007 2012-05-09
  • 打赏
  • 举报
回复
没数据肯定是不会执行啊。。

string sqlStr = "select top 12 * from prod_news where ID not in (select top " + num + " ID from prod_news order by infotime desc) and ClassName="+className+" order by infotime desc";
OleDbCommand cmd = new OleDbCommand(sqlStr, con);
OleDbParameter par1 = new OleDbParameter("@pagesize", OleDbType.Integer);
OleDbParameter par2 = new OleDbParameter("@pageindex", OleDbType.Integer);
OleDbParameter par3=new OleDbParameter("@ClassName",OleDbType.VarChar);
par1.Value = pagesize;
par2.Value = pageindex;
par3.Value=className;
cmd.Parameters.Add(par1);
cmd.Parameters.Add(par2);
cmd.Parameters.Add(par3);

SQL 里哪有@pagesize参数等
frank2828 2012-05-09
  • 打赏
  • 举报
回复
select top 12 * from prod_news where ID not in (select top 12 ID from prod_news order by infotime desc) and ClassName=‘检验分析纯水设备’ order by infotime desc


这是断点里的内容,在ACCESS里可以像SQL server一样执行查询码 ,
facelessvoidhj 2012-05-09
  • 打赏
  • 举报
回复
应该是没有查询出来数据,你断点进去看下SQL是怎样的,然后在ACCESS里面执行看看
frank2828 2012-05-09
  • 打赏
  • 举报
回复
是啊 我那条语句查询的结果 list为0,但是那条语句我不知道哪儿错了 ,我连接的是ACCESS 我不熟悉ACCESS啊啊
IT-Style 2012-05-09
  • 打赏
  • 举报
回复
可能是根据你传入的参数拼接的SQL语句没有查询出数据来.
frank2828 2012-05-09
  • 打赏
  • 举报
回复
我用的是ACCESS 数据库第一次用 问题肯定还在语句上啊 帮我瞅瞅吧~
内容概要:本文档是2025年全国广播电视技术能手竞赛IPTV专业的竞赛内容大纲,旨在指导参赛选手准备比赛。竞赛分为理论和实操两大部分。理论部分涵盖基本知识、基础理论和专业知识,包括法律法规、技术标准、IPTV技术基础、信号传输与分发、网络和数据安全等。实操部分则涉及IPTV系统设备、仪器设备的操作使用和指标测量。具体内容包括IPTV系统架构、传输技术与指标、设备配置及维护、专业技能如测量工具使用、视音频指标测量、直播点播协议分析、播出网络性能测量、网络安全数据分析以及系统故障排查等。 适合人群:从事或有意从事IPTV相关工作的技术人员,尤其是有志于参加全国广播电视技术能手竞赛的专业人士。 使用场景及目标:①助参赛选手全面了解并掌握IPTV相关的法规文件和技术标准;②提升选手对IPTV系统架构、传输技术和设备配置的理解;③增强选手在实际操作中的测量、分析和故障排查能力;④确保选手能够熟练运用各种测量工具和分析软件进行视音频指标测量和网络安全数据分析。 阅读建议:由于文档内容详尽且专业性强,建议读者在学习过程中结合实际案例和操作练习,同时参考相关技术文献,以便更好地理解和掌握竞赛所需的知识和技能。

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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