Подтвердить что ты не робот

Поток памяти как DB

В настоящее время я думаю об использовании SQLite в качестве механизма db для моего проекта С#, но я столкнулся с следующей проблемой: я не могу найти какой-либо API для хранения данных. Я хочу достичь следующего:

После запуска программы я хочу загрузить файл db (с HDD) в память. Во время выполнения программы я хочу использовать этот поток памяти как реальный db (чтение, запись, вставка, выбор и т.д.). После закрытия сохранить поток в файл.

Может ли кто-нибудь указать мне правильный путь или предложить другой движок db, который лучше подходит для этой цели.

4b9b3361

Ответ 1

Вы можете использовать SQLite Online Backup API, который имеет возможность копировать файл db в память, в память в файл. Встроенная поддержка SQLite Online Backup API присутствует в System.Data.SQLite версии 1.0.80.0 (с SQLite 3.7.11).

Это простой пример того, как API можно использовать в С#:

SQLiteConnection source = new SQLiteConnection("Data Source=c:\\test.db");
source.Open();

using (SQLiteConnection destination = new SQLiteConnection(
  "Data Source=:memory:"))
{
  destination.Open();               

  // copy db file to memory
  source.BackupDatabase(destination, "main", "main",-1, null, 0);
  source.Close();

  // insert, select ,...        
  using (SQLiteCommand command = new SQLiteCommand())
  {
    command.CommandText =
      "INSERT INTO t1 (x) VALUES('some new value');";

    command.Connection = destination;
    command.ExecuteNonQuery();
  }             

  source = new SQLiteConnection("Data Source=c:\\test.db");
  source.Open();

  // save memory db to file
  destination.BackupDatabase(source, "main", "main",-1, null, 0);
  source.Close();               
}