//关闭数据库
public static void CloseDatabase()
{
OleDbConnection conn = new OleDbConnection(connectionString);
if (conn.State == System.Data.ConnectionState.Open)
{
conn.Close();
conn.Dispose();
} }
public static OleDbDataReader ExecuteReader(string strSQL)//(使用该方法切记要手工关闭SqlDataReader和连接)
{
OleDbConnection conn = new OleDbConnection(connectionString);
OleDbCommand cmd = new OleDbCommand(strSQL,conn);
try
{
conn.Open();
return cmd.ExecuteReader();
}
catch(System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
}
调用方法下:
OleDbDataReader dr =SQLDAL.ExecuteReader(sql);
while(dr.Read())
{........ }
dr.Close();
SQLDAL.CloseDatabase();//关闭数据库连接,执行到这步时数据库显示是已经关闭的.
但我在文件夹下看mdb时,却是打开的.怎么是这样啊.
进程里能不能查看到.是什么进程.
------解决方案--------------------------------------------------------
在这个方法中你有一个新的OleDbConnection conn对象创建了,而且是没有执行open方法的,所以会报错“已经关闭”,注意这个conn对象不是你执行cmd.ExecuteReader();时的对象。
建议改为return cmd.ExecuteReader(CommandBehavior.CloseConnection);
它表示函数返回的sqldatareader会在清除时自动关闭数据库连接.
调用方法下:
OleDbDataReader dr =SQLDAL.ExecuteReader(sql);
while(dr.Read())
{........ }
dr.Close();//它会自动关闭数据库连接