C#Close()或使用/ Dispose()经常使用的SQLite对象

时间:2016-09-28 17:32:36

标签: c# sqlite

有时我看到人们喜欢在使用后处理任何事情,无论他们使用频率多少(可能与SQLite问题无关,但我现在正在处理SQLite,我感到困惑) - 或许我错了这给我带来了巨大的困惑。

例如(取自其他地方):

using(var con = new SQLiteConnection(conString))
using(var cmd = new SQLiteCommand(con))
{
    con.Open();
    // ...
} // also closes the connection

我的问题是,我应该在字段中存储SQLiteConnectionSQLiteCommand个对象,并使用方法.Open().Close()来处理数据库连接而不处理它们在应用程序终止之前 - 或将它们丢弃到垃圾收集中,就像它在我看来并不是一个优雅的想法一样?

编辑:如果有人说处置,那么为什么?我需要更好的答案,我需要真正的原因,而不是因为汇集,以及诸如此类的东西。我需要知道除了人为倾向的错误之外可能出现什么确切的问题,并提供一个示例或者可能是示例的链接。

例如,类字段:

private static SQLiteConnection sQLiteConnection; /// <summary>SQLiteConnection.</summary>
public static SQLiteConnection SQLiteConnection { get { return sQLiteConnection; } }

private static SQLiteCommand sQLiteCommand; /// <summary>SQLiteCommand.</summary>
public static SQLiteCommand SQLiteCommand { get { return sQLiteCommand; } }

使用私有方法初始化私有字段,并且在不处理对象的情况下重用这些对象;因此只读属性。

编辑2:为了更清楚地澄清,你是否误读了人?我说&#34;重用&#34;。这意味着创建了一个,并将其存储在字段中的某个位置以供重用。我将它存储在静态类中的静态字段中,以便在应用程序关闭之前重用。告诉我,为什么我必须处理它?<​​/ p>

为什么,做,我,拥有,处理,它?如果,我,是,去,重复&#34;,它?为什么呢?

1 个答案:

答案 0 :(得分:1)

.NET支持连接,因此创建它们通常不是一项昂贵的操作。使用“标准”方法通常更加清晰,试图跟踪连接是打开还是关闭等。

除非你有可衡量的连接问题,否则我会坚持创建它们,使用它们并处理它们的惯用方法。