Steven M. McNeese wrote:
>
> I upgraded an old .net 2.0 application using System.Data.Sqlite v 1.0.60.0
> to .net 4.5 using system.data.sqlite v 1.0.96.0.  The application started
> getting random exceptions when access the database using datsets.  See
> below:
> 

The only time that ObjectDisposedException will be thrown is when an attempt
is made to actually make use of a disposed object, including connections,
data readers, and commands.

For those objects, a "using" statement is typically the safest way to make
use of them, e.g.:

        using (SQLiteConnection connection = new SQLiteConnection(
            "Data Source=test.db;"))
        {
          connection.Open();

          using (SQLiteCommand command = connection.CreateCommand())
          {
            command.CommandText = "CREATE TABLE t1(x);";
            command.ExecuteNonQuery();

            command.CommandText = "INSERT INTO t1(x) VALUES(1);";
            command.ExecuteNonQuery();

            command.CommandText = "INSERT INTO t1(x) VALUES(2);";
            command.ExecuteNonQuery();

            command.CommandText = "SELECT x FROM t1 ORDER BY x;";

            using (SQLiteDataReader dataReader = command.ExecuteReader())
            {
              int count = 0;

              while (dataReader.Read())
                count++;

              return count;
            }
          }
        }

Alternatively, make sure they do not get garbage collected by keeping an
instance of them associated with another long-lived object (i.e. WinForm)
or as a static field somewhere.

--
Joe Mistachkin

Reply via email to