Внутренняя база данных C# приложения без установки СУБД
Планирую сделать настольное приложение для работы с генеалогическим древом. Как я понимаю (занимаюсь C# пару месяцев, а с базами данных почти не работала, поэтому опыта не имею), для хранения данных о членах лучше использовать БД, но тут встаёт вопрос, связанный с конкретикой. Сторонние СУБД могут и не стоять на устройстве пользователя (могу ошибаться, поэтому, прошу, если что, поправьте), а просить его что-либо устанавливать, возможно, не самая лучшая идея. На глаза попался Sqlite, и хотелось бы знать:
- Хорошая ли идея использовать Sqlite для подобных целей?
- Когда появляется большой смысл использовать MySQl/PostgreSQL/MS SQL? Если предполагается одновременный доступ нескольких пользователей? Большие объёмы данных?
Заранее спасибо за ответы.
Ответы (1 шт):
База Данных только на 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);
}