Presently, I'm attempting to fill an SQLite database with hundreds of 1000's of text data by using this this process:

SQLiteConnection = new SQLiteConnection(cntnStr);
connection.Open();

foreach(Page p in pages)
{
     using (SQLiteCommand command = new SQLiteCommand(String.Format("Insert Into Pages (ID, Data, Name) Values ({0}, '{1}', '{2}')", id, p.Data, p.Name), connection))
         command.ExecuteNonQuery();
}

However, I suspect that carrying this out about 10 occasions per second is most likely slowing down the entire process lower. It is possible to way I'm able to collate the information in memory after which add every 5000 records approximately in to the database in batch (so it's faster)?

EDIT: Super-important: Make certain you perform all of your SQL instructions inside a DbTransaction - within this situation an SQLiteTransaction:

SQLiteTransaction trans = connection.BeginTransaction();

// SQL centric code - repeated inserts/changes

trans.Commit(); // adds your changes

It enhances performance by 1000x.

Make use of a parameterized query, rather than building the query using string concatenation :

using (SQLiteConnection = new SQLiteConnection(cntnStr))
{
    connection.Open();

    string query = "Insert Into Pages (ID, Data, Name) Values (?, ?, ?)";
    using (SQLiteCommand command = new SQLiteCommand(query, connection)
    {
        command.Parameters.Add("id", DbType.Int32);
        command.Parameters.Add("data", DbType.String);
        command.Parameters.Add("name", DbType.String);
        foreach(Page p in pages)
        {
             command.Parameters["id"].Value = p.Id;
             command.Parameters["data"].Value = p.Data;
             command.Parameters["name"].Value = p.Name;
             command.ExecuteNonQuery();
        }
    }
}

This is faster since the DbCommand is just produced once, and also the totally only parsed once. Also, you steer clear of the perils of SQL injection because of the string concatenation

BTW, take a look at this article by Robert Simpson (author from the SQLite .Internet provider)

You'll have to handle getting away the information yourself, but use a batch place.

IE:

Insert Into Pages (ID, Data, Name) Values (...),(...),(...),(...)

You can load the table in the SQLite DB right into a DataTable-Object, then place your records in to the DataTable-Object and sync it back every 5000 records towards the DB.