在Unity中使用C#关闭SQLite

时间:2015-08-07 20:31:24

标签: c# android sqlite unity3d

我正在使用Unity为Android制作应用程序。

但我对SQLite有非常非常基本的问题,因为我还没有使用过数据库。

dbcmd.CommandText = "some select command here";

IDataReader reader = dbcmd.ExecuteReader();

// some jobs with the reader..


dbcmd.CommandText = "another select command here";

reader = dbcmd.ExecuteReader();

// some jobs with the reader..


reader.Close();
dbcmd.Dispose();
dbconn.Close();

reader = null;
dbcmd = null;
dbconn = null;

我需要多次调用ExecuteReader()方法。

以下是我的问题。

  1. 在调用ExecuteReader()方法重新之前,是否必须关闭阅读器?

  2. 如上所述关闭阅读器和数据库后,是否必须为变量赋值?

  3. 提前致谢!

2 个答案:

答案 0 :(得分:2)

  1. 阅读using声明 - 它是专门为此类用例设计的结构。
  2. 是的,第二次调用ExecuteReader()会返回一个全新的读取器对象,当您不再需要它时,该对象也必须关闭/处理。这是关于它们存储的变量和对象引用的问题。
  3. 在许多情况下这是一个很好的做法(特别是如果reader和dbcmd是实例字段),因为您标记它不是对变量中有效(非处置)对象的引用。但这并不重要,例如,如果此变量是当前函数的本地变量。

答案 1 :(得分:1)

关闭它取决于你是否需要保持打开状态,以及读者和连接的那个实例是否会持续到你的下一个电话。最简单的方法是运行它,看看是否收到错误。 我通常只是打开连接,创建阅读器,阅读,然后关闭连接,每次都处理读者。这里没有真正的性能问题,除非您只是疯狂地锤击数据库超级快速。从它的SQLite开始,它就是本地的,非常活泼,所以如果你快速打开和关闭,在延迟方面没有真正的问题。

就设置为空而言,你不需要。尽管如此,它并没有什么坏处。无论如何,这将全部收集到GC并转储。