Как я создаю sqllite3 базу данных в оперативной памяти?

Массив Dictionary - это , а не и IEnumerable из KeyValuePair (один Dictionary - но это не то, что у вас есть).

Я подозреваю, что вы хотели сделать следующее:

using System.Collections.Generic;

namespace Test
{
    public static class Test
    {
        public static void Execute<TKey, TValue>(this IEnumerable<IEnumerable<KeyValuePair<TKey, TValue>>> enums)
        {

        }

        public static void Execute<T>(this IEnumerable<T> enums)
        {
        }
    }

    public class Program
    {
        public static void Main()
        {
            IEnumerable<IEnumerable<KeyValuePair<string, string>>> data = new[] {
                new Dictionary<string, string> (){
                    {"Name" , "ITWeiHan" }
                }
            };
            data.Execute();
        }
    }
}

Обратите внимание, что часть решения должна быть явно о типе - чтобы гарантировать, что компилятору «предложат» выбрать метод, который я хочу это выбрать.

то есть. Я использую IEnumerable<IEnumerable<KeyValuePair<string, string>>>, а не var.

11
задан Ian Ringrose 20 October 2009 в 11:41
поделиться

3 ответа

Это на самом деле довольно легко. Просто укажите ':memory': как имя файла базы данных при открытии базы данных с помощью API C/C++. Это - специальная константа, которую распознает механизм. То же на самом деле работает на другие языки, такие как Python или Ruby, так как они обычно просто переносят API C/C++. См. http://sqlite.org/c3ref/open.html для полных деталей.

16
ответ дан 3 December 2019 в 03:54
поделиться

Просто откройте файл: память: и это должно сделать это (по крайней мере, это делает в PHP).

Вы упоминаете, что хотите читать в нескольких плоских файлах и сделать соединения на них. Если возможно хранить плоские файлы как базы данных SQLite, можно работать непосредственно с обоими путем присоединения одного к другому:

ATTACH foo.db AS foo

Затем обратитесь к таблицам в нечто как так:

SELECT * FROM foo.users

Таким образом, можно сделать соединения без потребности в создании базы данных в оперативной памяти.

5
ответ дан 3 December 2019 в 03:54
поделиться

Если Вы хотите, чтобы SQLite не использовал временные файлы в качестве журналов, например, Вы не хотите действия файла кроме того, когда Вы вручную запрашиваете подключение, разъединение, присоединение или отсоединение. Затем используйте следующие две прагмы во времени выполнения после соединения с ": память": база данных.

PRAGMA temp_store=MEMORY;
PRAGMA journal_mode=MEMORY;

Из документов.

5
ответ дан 3 December 2019 в 03:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: