Cannot open SQLite database-Collection of common programming errors

Using this code:

public void InsertPlatypiRequestedRecord(string PlatypusId, string PlatypusName, DateTime invitationSentLocal)
{
    var db = new SQLiteConnection(SQLitePath);
    {
        db.CreateTable();
        db.RunInTransaction(() =>
                                {
                                    db.Insert(new PlatypiRequested
                                                  {
                                                      PlatypusId = PlatypusId,
                                                      PlatypusName = PlatypusName,
                                                      InvitationSentLocal = invitationSentLocal
                                                  });
                                    db.Dispose();
                                });
    }
}

…I get, “SQLite.SQLiteException was unhandled by user code HResult=-2146233088 Message=Cannot create commands from unopened database

…but attempting to add a “db.Open()” doesn’t work, because there is apparently no such method.

  1. You are disposing the database prematurely (inside of the transaction). It is better to wrap things up inside of a “using” statement, which will dispose of the db connection:

    private void InsertPlatypiRequestedRecord(string platypusId, string platypusName, DateTime invitationSentLocal)
    {
        using (var db = new SQLiteConnection(SQLitePath))
        {
            db.CreateTable();
            db.RunInTransaction(() =>
            {
                db.Insert(new PlatypiRequested
                {
                    PlatypusId = platypusId,
                    PlatypusName = platypusName,
                    InvitationSentLocal = invitationSentLocal
                });
            });
        }
    }
    
  2. string connecString = @"Data Source=D:\SQLite.db;Pooling=true;FailIfMissing=false";       
    /*D:\sqlite.db??sqlite????????,???????????*/
    SQLiteConnection conn = new SQLiteConnection(connectString); //??????
    conn.Open();  //????
    SQLiteCommand cmd = conn.CreateCommand();
    
    cmd.CommandText = "select * from orders";   //?????????orders?
    
    cmd.CommandType = CommandType.Text;
    using (SQLiteDataReader reader = cmd.ExecuteReader())
    {
       while (reader.Read())
                    Console.WriteLine( reader[0].ToString());
    }
    

    you can download System.Data.SQLite.dll here

    here is a chinese article for csharp connect sqlite