关于DataReader问题,求大神指导
因为要不断的读取数据库,所以方法是在线程里面执行的,线程执行的时间间隔是1000ms。数据库是远程访问的。问题出现了:由于数据库是远程访问的,如果出现网络延迟,第一次的DataReader还没有关闭。第二次又开始执行了。导致不停的出现:There is already an open DataReader associated with this Connection which must be closed first.
望各位大侠指导下,该怎么处理! 小弟先谢过了。 --------------------编程问答-------------------- 你可以采用断开式数据库连接,DataReader读取数据库期间必须保证数据库的正常连接 --------------------编程问答-------------------- 一次读入dataset里,然后从dataset里取 --------------------编程问答--------------------
但是,读取的数据并不是用做显示的,是要及时更新数据的。断开式连接能满足吗? --------------------编程问答-------------------- 你试一下使用SqlDataAdapter方式读取数据
private static string strConn = ConfigurationManager.ConnectionStrings["SQLLSB2008"].ConnectionString;--------------------编程问答-------------------- 你用一个全局变量控制,每去读取的时候判断上一次读取是否已经完成如果true则执行这次的操作,否则return;
2 private static SqlConnection myConn = null;
3
4 private static SqlDataAdapter myAdapter = new SqlDataAdapter();
5 private static SqlCommand myCmd = new SqlCommand();
6 private static DataTable myTable = new DataTable();
7
8
9public static DataTable returnDataTable(string mySql, SqlParameter[] parameters)
10 {
11 myConn = new SqlConnection(strConn);
12 using (myCmd = new SqlCommand(mySql, myConn))
13 {
14 try
15 {
16 myCmd.Parameters.AddRange(parameters);
17 myAdapter = new SqlDataAdapter(myCmd);
18 myTable.Clear();
19 myAdapter.Fill(myTable);
20 }
21 catch
22 {
23 connClose();
24 }
25 finally
26 {
27 connClose();
28 }
29 }
30 return myTable;
31 }
补充:.NET技术 , C#