ключ-значение-db-csharp
Легкий пакет для быстрого и легкого управления, загрузки, обновления и сохранения базы данных типа «ключ-значение».
Примерами использования этого пакета являются загрузка файла конфигурации, языкового файла и настройки предпочтений в приложении. Больше вариантов использования можно увидеть здесь.
Пакет не выполняет никаких операций ввода и вывода, поскольку существует несколько способов чтения и записи в файл, и методы имеют свои сильные и слабые стороны, поэтому разработчик должен найти эффективный способ загрузки и сохранения локально.
Имя пакета — KeyValueDB.
Использование диспетчера пакетов:
Install-Package KeyValueDB -Version 1.2.0
Использование .NET CLI:
dotnet add package KeyValueDB --version 1.2.0
Использование ссылки на пакет:
< PackageReference Include = " KeyValueDB " Version = " 1.2.0 " />
Использование пакетного CLI:
paket add KeyValueDB --version 1.2.0
В следующем примере загружается, обновляется, считывается и удаляется простой объект значения ключа.
using System ;
using Io . Github . Thecarisma ;
namespace Sample
{
class Test
{
public static void Main ( string [ ] args )
{
//initialize the key-value
KeyValueDB keyValueDB = new KeyValueDB ( "Greet=Hello World,Project=KeyValueDB" , true , '=' , ',' , false ) ;
//get an object
Console . WriteLine ( keyValueDB . Get ( "Greet" ) ) ;
//remove an object
keyValueDB . Remove ( "Greet" ) ;
//add an object
keyValueDB . Add ( "What" , "i don't know what to write here" ) ;
//print all the objects
foreach ( var kvo in keyValueDB ) {
Console . WriteLine ( kvo ) ;
}
}
}
}
kvp - Key Value Pair
kvdb - Key value Database
pss - Possibly
kvo - Key Value Object
В качестве ключа и значения kvo используется только строковый тип. Kvo можно использовать для замены или установки значения ключа.
Вы можете использовать пакет для обновления и создания существующей базы данных значений ключей. Эта библиотека не читает базу данных из файла, а это означает, что вам нужно найти способ прочитать строку из файла.
Создайте новую базу данных keyValueDB. Разделителем по умолчанию между ключом и значением является =
, а разделителем между kvp является n
(новая строка).
KeyValueDB keyValueDB = new KeyValueDB ( ) ;
Чтобы загрузить существующую базу данных KeyValueDB
KeyValueDB keyValueDB = new KeyValueDB (
"Greet=Hello World,Project=KeyValueDB" , //pss read string from file
true , //case sensitive is true
'=' , //the seperator from key and value
',' , //the delimeter for the key-value-pair
false //error tolerance if true no exception is thrown
) ;
Единственный допустимый тип, который можно вставить, — это допустимые KeyValueObject
и String
. Метод Add
можно использовать для добавления нового kvp в объект.
Добавьте kvp с его ключом и значением.
keyValueDB . Add ( "Greet" , "Hello World" ) ;
Добавьте kvp, используя класс KeyValueObject
.
KeyValueObject keyValueObject = new KeyValueObject ( "Greet" , "Hello World" ) ;
keyValueDB . Add ( keyValueObject ) ;
Существует несколько способов найти и получить значение объекта kvdb. Значение или KeyValueObject можно получить, используя методы ниже.
Вы можете получить kvo, используя ключ или индекс. Если соответствующий kvo не найден, в базу данных добавляется пустой kvo, а затем возвращается, но не в случае запроса с целочисленным индексом. Если резервный kvo отправляется в качестве второго параметра, то, когда запрос kvo не найден, резервный второй параметр добавляется в kvdb и затем возвращается.
Получите kvo, используя его целочисленный индекс
keyValueDB . GetKeyValueObject ( 0 ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Получите kvo, используя его ключ
keyValueDB . GetKeyValueObject ( "Greet" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Получите kvo, используя его ключ с резервным kvo
KeyValueObject keyValueObject = new KeyValueObject ( "Name" , "Adewale Azeez" ) ;
keyValueDB . GetKeyValueObject ( "Name" , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Name,Value=Adewale Azeez
Получите kvo, проверив в kvdb объект kvo, содержащий часть ключа. Если резервный kvo отправляется в качестве второго параметра, то, когда запрос kvo не найден, резервный второй параметр добавляется в kvdb и затем возвращается.
Получите аналогичный kvo, используя его ключевую часть
keyValueDB . GetLikeKeyValueObject ( "eet" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Получите аналогичный kvo, используя его ключевую часть с резервным kvo.
KeyValueObject keyValueObject = new KeyValueObject ( "Name" , "Adewale Azeez" ) ;
keyValueDB . getKeyValueObject ( "Nam" , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Name,Value=Adewale Azeez
Вы можете получить значение kvdb, используя ключ или индекс. Если соответствующее значение не найдено, в базу данных добавляется пустая строка, а затем возвращается, но не в случае запроса с целочисленным индексом.
Если резервный kvo отправляется в качестве второго параметра, то, когда ключ запроса не найден, резервный второй параметр добавляется в kvdb, а затем возвращается значение. Если строковое значение отправляется в качестве второго значения, оно возвращается, если ключ не найден в kvdb.
Получите значение, используя его целочисленный индекс
keyValueDB . Get ( 0 ) ;
//"Hello World"
Получите значение, используя его ключ
keyValueDB . Get ( "Greet" ) ;
//"Hello World"
Получите kvo, используя его ключ с резервным значением
keyValueDB . Get ( "Licence" , "The MIT Licence" ) ;
//"The MIT Licence"
Получите kvo, используя его ключ с резервным kvo
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . Get ( "Name" , keyValueObject ) ;
//"The MIT Licence"
Получите значение, проверив в kvdb объект kvo, содержащий часть ключа.
Если резервный kvo отправляется в качестве второго параметра, то, когда ключ запроса не найден, резервный второй параметр добавляется в kvdb, а затем возвращается значение.
Получите значение, используя его ключевую часть
keyValueDB . GetLike ( "eet" ) ;
//"Hello World"
Получите значение, используя его ключевую часть с резервным kvo
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . GetLike ( "Li" , keyValueObject ) ;
//"The MIT Licence"
Существуют различные способы обновления kvp в kvdb, значение можно изменить напрямую или установить новый объект KeyValueObject. Если вы попытаетесь установить kvo, которого нет в kvdb, используя его ключ, он будет добавлен в kvdb.
Метод Set
используется для изменения значения kvo с использованием индекса kvo или ключа kvo.
Установите значение kvo, используя его индекс
keyValueDB . Set ( 0 , "Hello World from thecarisma" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World from thecarisma
Установите значение kvo, используя его клавишу
keyValueDB . Set ( "Greet" , "Hello World from thecarisma" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World from thecarisma
Полностью измените KeyValueObject в kvdb, используя либо его индекс, либо его ключ. Kvo полностью заменяется, что означает изменение уникальных полей, таких как хэш-код kvo. Когда kvo устанавливается с помощью ключа it, если соответствующий kvo не существует, он добавляется в kvdb. Обратите внимание, что этот метод полностью меняет kvo, поэтому его можно использовать для замены kvo.
Установите kvo, используя его индекс
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . SetKeyValueObject ( 0 , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Licence,Value=The MIT Licence
Установите значение kvo, используя его клавишу
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . SetKeyValueObject ( "Greet" , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Licence,Value=The MIT Licence
Новый kvp можно вставить, вызвав метод Add
. Kvp можно добавить, используя его ключ и значение, или путем непосредственного добавления объекта KeyValueObject в kvdb.
Добавьте новый ключ, используя ключ и значение.
keyValueDB . Add ( "Key" , "This is the value" ) ;
Добавьте новый kvp, используя новый KeyValueObject.
KeyValueObject keyValueObject = new KeyValueObject ( "Key" , "This is the value" ) ;
keyValueDB . Add ( keyValueObject ) ;
Полностью удалите kvp из kvdb, используя любой ключ целочисленного индекса. Из метода возвращается удаленный kvp. Если индекс не существует, возникает ошибка выхода за пределы, и если kvo с ключом отсутствует, ничего не делается, а возвращается пустой kvo.
Удалить kvp, используя целочисленный индекс
keyValueDB . Remove ( 0 ) ;
//removes the first kvp in the kvdb
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Удалить квп с помощью его ключа
keyValueDB . Remove ( "Greet" ) ;
//removes the first kvp in the kvdb
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Получите размер kvo в kvdb.
keyValueDB . Size ( ) ;
//4
Удалить все элементы и кво из квдб
keyValueDB . Clear ( ) ;
//keyValueDB.Size() = 0
Проверьте, есть ли в kvdb какие-либо kvo.
keyValueDB . IsEmpty ( ) ;
//False
Коллекцию kvp kvdb можно просмотреть как строку с помощью метода ToString
. Возвращенное значение можно сохранить локально, записав в постоянное хранилище или в текстовый файл. Выходные данные метода ToString
определяются kvos, разделителем и разделителем.
keyValueDB . ToString ( ) ;
// "Greet=Hello World,Project=KeyValueDB,Project=KeyValueDB,Licence=The MIT Licence"
Объект KeyValueDB можно итерировать в собственном коде, используя выражение цикла foreach..in
.
foreach ( var kvo in keyValueDB ) {
//operate on the KeyValueObject
}
Класс KeyValueObject содержит поле ключа и значения, а также методы установки и получения полей. KeyValueObject — это основной внутренний тип, используемый в классе KeyValueDB.
В KeyValueDB пара ключ-значение хранится в типе List
, весь поиск, обновление и удаление выполняется в keyValueObjects
в классе. Строка, отправленная в качестве первого параметра, после анализа на допустимое значение ключа с использованием полей разделителя и разделителя. Метод ToString
также анализирует содержимое keyValueObjects
в допустимую строку с учетом разделителя и разделителя.
Прежде чем начать вносить вклад, прочтите руководство по вкладу на странице «РУКОВОДСТВО ДЛЯ ВНЕСЕНИЙ».
Вы можете открыть проблему или подать запрос, который решает только проблемы в этой реализации, в этом репозитории. Если проблема касается концепций пакета, тогда создайте проблему или RFC здесь.
Вы можете поддержать некоторых членов этого сообщества, поскольку они оказывают большое влияние на развитие людей, которые могут начать заниматься разработкой программного обеспечения.
Лицензия MIT Copyright (c) 2020 Adewale Azeez - keyvaluedb