c# 如何从数据库中同时读多个字段?

testong110 2008-12-02 07:34:16
/// <summary>
/// 批量读取数据
/// </summary>
/// <param name="command">查询语句</param>
/// <returns>返回SqlDataReader数据留</returns>
public static SqlDataReader TiredQuery(string command)
{
SqlDataReader datareader = null;
try
{
string MyConn = dbconn();
SqlConnection MyConnection = new SqlConnection(MyConn);
MyConnection.Open();
SqlCommand MyCommand = new SqlCommand(command, MyConnection);
datareader = MyCommand.ExecuteReader();
//MyConnection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误!");
}
return datareader;
}
我用上面的方法勉强实现的,但是最后连接没有close.大家有什么好的方法吗?
...全文
134 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
testong110 2008-12-17
  • 打赏
  • 举报
回复
感谢大家的回答,lovehongyun 的方法被采用.
lovehongyun 2008-12-02
  • 打赏
  • 举报
回复
或者把你的方法中的代码修改一下:

......
SqlCommand MyCommand = new SqlCommand(command, MyConnection);
datareader = MyCommand.ExecuteReader(CommandBehavior.CloseConnection);//这表明当我们手工关闭dataReader后,数据库连接会自动关闭。
//MyConnection.Close();
...........
......


外部调用你的方法

SqlDataReader dr = 类名.TiredQuery("select * from table1");
...//执行你的操作
....
dr.close();//操作完后关闭这里的dr即可.这样连接会自动关闭:)
hubofly 2008-12-02
  • 打赏
  • 举报
回复
在调用TiredQuery这个方法的方法里面open connection 同时也关闭这个colse
做个connection类,继承一下就好
testong110 2008-12-02
  • 打赏
  • 举报
回复
 //MyConnection.Close(); 
该句已经被我//了!不然在别的页面就的不到返回的SqlDataReader.
这个方法运行后会留下一个连接,这不是我想要的!
我想要的就是对多个表都能调用此方法来查询数据,当然表的字段数量肯定不一样!
大家多多提出建议啊!分数不够可以再加!
lovehongyun 2008-12-02
  • 打赏
  • 举报
回复
用reader连接是可以正常关闭的,你的没关是因为你程序写的有问题

我看你用datatable吧.省得关:)

public static DataTable TiredQuery(string command) 
{
SqlConnection MyConnection = new SqlConnection(MyConn);
SqlDataAdapter da = new SqlDataAdapter(command,MyConnection);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
testong110 2008-12-02
  • 打赏
  • 举报
回复
汗,补充一点!字段数不确定!我写的就是从楼上的方法改的!但是对于有不同字段数的表,该方法怎么才能很好的兼容?
Old_Mouse 2008-12-02
  • 打赏
  • 举报
回复
声明不需要放在try里,只把执行放在try里获取下异常就行了,
close可以放在try{}catch{}finally{} finally里。
heyu1000 2008-12-02
  • 打赏
  • 举报
回复
哦,补充一下,刚才没仔细看
你这样的方法最好不要返回SqlDataReader,因为SqlDataReader是要跟数据库连接才能取数据的,
所以你最好是在这个方法里面将数据取出来,然后存到一个对象里面返回去,这样才能把数据库连接关掉.
heyu1000 2008-12-02
  • 打赏
  • 举报
回复

/// <summary>
/// 批量读取数据
/// </summary>
/// <param name="command">查询语句 </param>
/// <returns>返回SqlDataReader数据留 </returns>
public static SqlDataReader TiredQuery(string command)
{
SqlDataReader datareader = null;
try
{
string MyConn = dbconn();
SqlConnection MyConnection = new SqlConnection(MyConn);
MyConnection.Open();
SqlCommand MyCommand = new SqlCommand(command, MyConnection);
datareader = MyCommand.ExecuteReader();
while (datareader.Read())
{
string f1 = (string)datareader["Field1"];

string f2 = (string)datareader["Field2"];

string f3 = (string)datareader["Field3"];
//.......
}
datareader.Close();
MyConnection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误!");
}
return datareader;
}

110,533

社区成员

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

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

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