日期:2014-05-17  浏览次数:20871 次

求助大神,为什么远程连接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就行了