数据库conn.Close()与conn.dispose(方法的区别

Close()是关闭链接,Dispose()是释放对象(垃圾回收器回收)比如Conn对象,Close过后,Conn这个对象本身还存在内存中,还在连接池中,需要在使用的时候,可以直接用。而调用Dispose()后,释放conn对象所占用的资源,释放后这个对象就不可用了,处于等待垃圾回收器回收状态;Conn对象被回收,不会再放入连接池,Conn对象已经不存在了,下次再需要使用的时候,需要重新创建(New)

如果所有的连接都被Dispose的话,每次使用数据库都必须重新创建连接,这样很耗费资源。因此不要用Dispose。.NET会维护连接池,连接Open的时候从连接池中取出一个没有使用的连接,用完以后Close()的时候再放回连接池,实际上没有创建新的连接,从而提高了性能。 因此为了性能,为了使用连接池,不可以dispose,但必须close() 。
时间: 2024-08-30 15:03:32

数据库conn.Close()与conn.dispose(方法的区别的相关文章

设置数据库兼容级别的两种方法以及区别

转:http://blog.csdn.net/htl258/article/details/5696325 --设置数据库兼容级别的两种方法 --以设置兼容SQL Serve 2005 为例 --法一: ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = 90 GO --法二: EXEC sp_dbcmptlevel database_name,90 GO database_name 要修改为数据库的名称. 各参数值对应的数据库版本: 8

Java连接MySQL数据库实现用户名密码的验证方法 Java语句中sql查询语句'' ""作用

//方法一,可以验证登录,但方法不实用.package com.swift; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; public class Logi

conn.encoders[SafeBytes] = conn.encoders[bytes] KeyError: <class 'bytes'>

问题描述:Django连接mysql数据库,修改了setting.py文件后,启动服务器报错 错误截图如下: 解决方法: 1.pip install pymsql 2.在setting.py同目录下的__init__.py文件中加上如下两行代码 import pymysql pymysql.install_as_MySQLdb() conn.encoders[SafeBytes] = conn.encoders[bytes] KeyError: <class 'bytes'> 原文地址:htt

是否需要手动执行DataContext的Dispose方法?

我们知道DataContext实现了IDisposable接口.在C#中,凡是实现了IDisposable接口的类,都推荐的使用using语句.如下: using (DataContext db = new DataContext(fileOrServerOrConnection)) { //... } 使用using语句可以确保以正确的方式调用Dispose方法,即使在语句块中出现异常,Dispose方法也将被执行. 但当我们使用如下代码时,将不可避免地得到“System.ObjectDisp

只显示前几条数据的sql语句写法 七种数据库中Select Top的使用方法

七种数据库中Select Top的使用方法 1. Oracle数据库 SELECT * FROM TABLENAME WHERE ROWNUM <= N 2. Infomix数据库 SELECT FIRST N * FROM TABLENAME 3. DB2数据库 SELECT * FROM (SELECT * ROW_NUMBER() OVER({ORDER BY COL1 DESC}) AS ROWNUM FROM TABLENAME) WHERE ROWNUM <= N 或者 SELEC

强制回收和IDisposable.Dispose方法

如果某对象的 Dispose 方法被调用一次以上,则该对象必须忽略第一次调用后的所有调用. 如果对象的 Dispose 方法被多次调用,该对象一定不要引发异常. 除Dispose 之外的实例方法在资源已释放时会引发 ObjectDisposedException. 用户可能期望资源类型使用特定的约定来表示已分配状态和已释放状态.流类即是这样一种示例,传统上认为它们要么打开要么关闭.具有此种约定的类的实施者可能选择实现具有自定义名称(如“Close”)的公用方法来调用 Dispose 方法. 因为

MSSQL附加数据库5120错误(拒绝访问)处理方法

MSSQL附加数据库时提示以下错误: 无法打开物理文件“***.mdf”.操作系统错误 5:“5(拒绝访问.)”. (Microsoft SQL Server,错误: 5120) 该经验介绍如何处理该报错,而后成功附加数据库. 添加Authenticated Users用户名.为Authenticated Users用户分配 完全控制 权限.而后再次附加数据库,附加数据库成功. MSSQL附加数据库5120错误(拒绝访问)处理方法,布布扣,bubuko.com

数据库处理表中重复数据方法

--查询表中重复数据 select * from 表名 t where t.id in ( SELECT id FROM 表名 GROUP BY id HAVING COUNT(主键编号)>1 ); --去除表中重复数据 delete from 表名 a where rowid not in ( select max(b.rowid) from 表名 b where a.主键编号 = b.主键编号 );数据库处理表中重复数据方法,布布扣,bubuko.com

定义页面的Dispose方法:[before]unload事件启示录

前言 最近实施的同事报障,说用户审批流程后直接关闭浏览器,操作十余次后系统就报用户会话数超过上限,咨询4A同事后得知登陆后需要显式调用登出API才能清理4A端,否则必然会超出会话上限. 即使在页面上增添一个登出按钮也无法保证用户不会直接关掉浏览器,更何况用户已经习惯这样做,增加功能好弄,改变习惯却难啊.这时想起N年用过的window.onbeforeunload和window.onunload事件. 本文记录重拾这两个家伙的经过,以便日后用时少坑. 为网页写个Dispose方法 C#中我们会将释

IDisposable .Dispose 方法

如果某对象的 Dispose 方法被调用一次以上,则该对象必须忽略第一次调用后的所有调用. 如果对象的 Dispose 方法被多次调用,该对象一定不要引发异常. 除Dispose 之外的实例方法在资源已释放时会引发 ObjectDisposedException. 用户可能期望资源类型使用特定的约定来表示已分配状态和已释放状态.流类即是这样一种示例,传统上认为它们要么打开要么关闭.具有此种约定的类的实施者可能选择实现具有自定义名称(如“Close”)的公用方法来调用 Dispose 方法. 因为