我注意到SQLiteConnection
中的System.Data.SQLite
对象拥有两种类似的方法:
Close()
Dispose()
SQLiteDataReader
对象相同。
有什么区别?
答案 0 :(得分:21)
Dispose
也会关闭连接,但在调用Close
时,您可以再次重新打开连接。处理连接时无法进行此操作。
一般情况下,不要调用Close
,而只需通过在using
块中创建连接来隐式调用dispose:
using (var connection = new SqlConnection(...))
{
// use connection here.
} // connection gets closed and disposed here.
答案 1 :(得分:5)
Connection.Close()将简单地关闭连接字符串中定义的服务器连接。在此之后可以使用/重新打开Connection。
Connection.Dispose()
将完全清理,删除所有非托管资源,防止再次使用Connection。一旦被调用,您就不应该再尝试使用该对象了。在Dispose(),
Close()`中,所有人肯定都会被调用。
如果可能的话,我会建议使用using
这样的使用语法,以确保正确清理内容:
using(SqlLiteConnection conn = new SqlLiteConnection(...))
{
// Do work here
}
无论是否抛出异常,这都会自动为您处理连接。