请教一个问题.关天DataReader问题

yangpeiyu 2007-03-26 03:40:19
类:
public static SqlDataReader ExecuteReader(string strSQL)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand(strSQL,connection);
SqlDataReader myReader;
try
{
connection.Open();
myReader = cmd.ExecuteReader();
return myReader;
}
catch(System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}

前台的代码:

protected void butSure_Click(object sender, EventArgs e)
{
string mysql = "select my_id,my_name from mytest where my_id='" + txtID.Text + "'";

Label1.Text=(string)(myDbClass.ExecuteReader(mysql))[0];
Label2.Text = (string)(myDbClass.ExecuteReader(mysql))[1];
}


以上就是我要用DataReader数据集来获取ID,NAME的值赋给两个LABEL.
但在运行时说阅读器关闭时 MetaData 的尝试无效。
要改类或前台代码的哪个部分呢?

...全文
226 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Coco孙 2008-09-04
  • 打赏
  • 举报
回复
.
veiny 2008-08-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhanglei5415 的回复:]
C# code protected void butSure_Click(object sender, EventArgs e)
{
string mysql = "select my_id,my_name from mytest where my_id= ' " + txtID.Text + " ' ";
SqlDataReader dr=myDbClass.ExecuteReader(mysql);
if (dr.Read())
{
Label1.Text=dr["my_id"].ToString();

[/Quote]
正解
ppp7p 2008-07-29
  • 打赏
  • 举报
回复
类:
public static SqlDataReader ExecuteReader(string strSQL)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand(strSQL,connection);
SqlDataReader myReader;
try
{
connection.Open();
myReader = cmd.ExecuteReader();
return myReader;
}
catch(System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}


前台:
string mysql = "select my_id,my_name from mytest where my_id= ' " + txtID.Text + " ' ";
sqlDataReader reader=class.ExecuteReader(sql);
while(reader.read())
{
this.lable1.Text=reader.getstring(0);//my_id
this.lable2.Text=reader.getstring(1);//my_name
}
reader.close();
badtank 2008-04-02
  • 打赏
  • 举报
回复
3楼正解。更稳妥一点的是使用Convert.toString来替换ToString,可以避免null值的问题。
二次调用的问题。正确的应该是一次返回datareader,然后读取不同的列。
libirds 2008-04-02
  • 打赏
  • 举报
回复
zhanglei5415 的写法正确。不然会调用两次datareader导致出错
ReyZhang 2008-04-02
  • 打赏
  • 举报
回复
  protected   void   butSure_Click(object   sender,   EventArgs   e)
{
string mysql = "select my_id,my_name from mytest where my_id= ' " + txtID.Text + " ' ";
SqlDataReader dr=myDbClass.ExecuteReader(mysql);
if (dr.Read())
{
Label1.Text=dr["my_id"].ToString();
Label2.Text = dr["my_name"].ToString();
}
dr.Close();
}



这样写比较好吧
jy03070017 2008-04-02
  • 打赏
  • 举报
回复
明白了myDbClass.ExecuteReader(mysql)产生了一个myReader

第2次调用又产生了一个myReader 重复了
不知道对不对啊
jy03070017 2008-04-02
  • 打赏
  • 举报
回复
同样的问题 顶一个

62,074

社区成员

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

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

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

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