Внутренняя база данных C# приложения без установки СУБД

Планирую сделать настольное приложение для работы с генеалогическим древом. Как я понимаю (занимаюсь C# пару месяцев, а с базами данных почти не работала, поэтому опыта не имею), для хранения данных о членах лучше использовать БД, но тут встаёт вопрос, связанный с конкретикой. Сторонние СУБД могут и не стоять на устройстве пользователя (могу ошибаться, поэтому, прошу, если что, поправьте), а просить его что-либо устанавливать, возможно, не самая лучшая идея. На глаза попался Sqlite, и хотелось бы знать:

  1. Хорошая ли идея использовать Sqlite для подобных целей?
  2. Когда появляется большой смысл использовать MySQl/PostgreSQL/MS SQL? Если предполагается одновременный доступ нескольких пользователей? Большие объёмы данных?

Заранее спасибо за ответы.


Ответы (1 шт):

Автор решения: Boris Dligach

База Данных только на XML.

Самый простой способ - использовать DataTable из пространства System.Data и XML. Пример создания базы данных, добавления записи и сохранения.

    private void InitData()
    {
    DataSet dsUsers = new DataSet("Users");
    DataTable UsersDataTable = dsUsers.Tables.Add("UsersTable");
    string _FilePathUsersXML = @"C:\\AuthorizationList.XML";
    if (File.Exists(_FilePathUsersXML))
    {
    XmlReadMode v = UsersDataTable.ReadXml(_FilePathUsersXML);
    //Debug.WriteLine(UsersDataTable.Rows.Count);
    }
    else
    {
    DataColumn c = UsersDataTable.Columns.Add("FULLNAME", System.Type.GetType("System.String"));
    c.AllowDBNull = false;
    c.Unique = true;
    c.ReadOnly = false;

    c = UsersDataTable.Columns.Add("NAME", Type.GetType("System.String"));
    c.AllowDBNull = false;
    c.Unique = true;
    c.ReadOnly = false;

    c = UsersDataTable.Columns.Add("PASSWORD", Type.GetType("System.String"));
    c.AllowDBNull = false;
    c.Unique = false;
    c.ReadOnly = false;
    }
    }

    // Add new row:
    UsersDataTable.Rows.Add("Full Name", "FN", "1234");

    // Save to XML:
    static void SaveUsersDataTable()
    {
        UsersDataTable.AcceptChanges();
        UsersDataTable.WriteXml(_FilePathUsersDataTable, XmlWriteMode.WriteSchema);
    }
→ Ссылка