OleDbDataReader sdr = cmd.ExecuteReader();取值问题

kcalxy 2012-10-04 08:06:55
代码如下,while()时sdr只显示最后一条,if()时只显示第一条。怎么才能显示全部啊 ,着急,在线等。高手们帮帮忙!谢谢。

string ses = Session["name"].ToString();
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(ConfigurationManager.AppSettings["OleConnectionString"].ToString());
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();

string qk = "select xm from tb_Teacher where jgh ='" + ses + "'";
OleDbCommand cmdqk = new OleDbCommand(qk, conn);
cmdqk.CommandType = CommandType.Text;
OleDbDataReader drqk = cmdqk.ExecuteReader();
while (drqk.Read())
{
string jsxm = drqk["xm"].ToString();
string sqlxh = "select xh from tb_Student where zdjs='" + jsxm + "'";

OleDbCommand cmdxh = new OleDbCommand(sqlxh, conn);

OleDbDataReader sdrxh = cmdxh.ExecuteReader();

if (sdrxh != null)
{
while (sdrxh.Read())
{
string xsxh = sdrxh["xh"].ToString();

string sqljg = "select * from tb_design where xh='" + xsxh + "'";
if (!this.ddl_bysj.SelectedValue.Equals("0"))
sqljg += " and bysj='" + ddl_bysj.Text + "'";
if (!this.ddl_zy.SelectedValue.Equals("0"))
sqljg += " and zy='" + ddl_zy.Text + "'";
if (!this.ddl_bj.SelectedValue.Equals("0"))
sqljg += "and bj='" + ddl_bj.Text + "'";

OleDbCommand cmd = new OleDbCommand(sqljg, conn);

OleDbDataReader sdr = cmd.ExecuteReader();

Repeater1.DataSource = sdr;
Repeater1.DataBind();
sdr.Close();
}
}
sdrxh.Close();
}

drqk.Close();
conn.Close();
...全文
416 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kcalxy 2012-10-04
  • 打赏
  • 举报
回复
大家看明白我贴的代码了吗?
kcalxy 2012-10-04
  • 打赏
  • 举报
回复
就是因为向前,所以到了最后一条不向前了,才只显示了最后一条,我想要while (sdrxh.Read())
显示全部条数绑定到repeter上,怎么做啊?
{
string xsxh = sdrxh["xh"].ToString();

string sqljg = "select * from tb_design where xh='" + xsxh + "'";
//if (!this.ddl_bysj.SelectedValue.Equals("0"))
//sqljg += " and bysj='" + ddl_bysj.Text + "'";
//if (!this.ddl_zy.SelectedValue.Equals("0"))
//sqljg += " and zy='" + ddl_zy.Text + "'";
//if (!this.ddl_bj.SelectedValue.Equals("0"))
//sqljg += "and bj='" + ddl_bj.Text + "'";

OleDbCommand cmd = new OleDbCommand(sqljg, conn);

OleDbDataReader sdr = cmd.ExecuteReader();

Repeater1.DataSource = sdr;
灿烂阳光168 2012-10-04
  • 打赏
  • 举报
回复
while (sdrxh.Read())

表示向前移动一行,如果有记录,那么执行循环。
kcalxy 2012-10-04
  • 打赏
  • 举报
回复
我的问题大家明白吗?
kcalxy 2012-10-04
  • 打赏
  • 举报
回复
对的,用到的表比较多,环境有点复杂。就想知道OleDbDataReader这种方法怎么解决问题。
暖枫无敌 2012-10-04
  • 打赏
  • 举报
回复
你双层循环啊?

就是将数据绑定到Repeater上,搞这么麻烦!

62,046

社区成员

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

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

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

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