求助大神,为什么远程连接Access数据库后,断开网络,执行查询后依然有数据
用的是VS2008,远程连接Access2003数据库,连接成功后,我将网络连接禁用,然后发现没有报错,我用断点查的时候发现执行查询语句还能查询出数据,奇怪,不是断开了吗?为什么还有数据
- C# code
public DataTable Mydatatable(string s3) { DataTable inv = new DataTable(); inv.Clear(); try { ReConnection(); if (sqlcn.State == ConnectionState.Open) { using (SqlCommand sqlcom3 = new SqlCommand(s3, this.sqlcn)) { SqlDataReader sdr = sqlcom3.ExecuteReader(); inv.Load(sdr); sqlcom3.Dispose(); sdr.Dispose(); sdr.Close(); } } else if (olecn.State == ConnectionState.Open) { using (OleDbCommand olecom2 = new OleDbCommand(s3, this.olecn)) { OleDbDataReader oledr = olecom2.ExecuteReader(); inv.Load(oledr); olecom2.Dispose(); oledr.Dispose(); oledr.Close(); } } errflag = false; return inv; } catch(Exception err) { errflag = true; return inv; throw err; } }
上面是执行数据库查询语句,在连接类里面,下面是调用语句,用定时器不断来读取远程Access数据库数据
- C# code
DataTable dt1 = new DataTable();select_st1 = "select ScTime from sRecords where ScTime in (select max(ScTime) from sRecords)";dt1 = access_con1.Mydatatable(select_st1);DataTableReader dbreader = new DataTableReader(dt1);dbreader.Read();st1 = Convert.ToString(dbreader.GetValue(dbreader.GetOrdinal("ScTime")));
上面执行查询语句已经有释放资源的语句了,为什么当网络断了,而且还是远程连接的时候,还有数据返回,还能查询出数据,希望各位大虾指点下我这个小菜鸟,想了很久都不知道为什么
[解决办法]
一般这种问题都是粗心引起的
[解决办法]
如果已经执行完成了。你断开网络只会影响你后面的程序。
[解决办法]
内存没清理干净
[解决办法]
每查完后 关闭Connection就行了