Simple.Sqlite
0.6.2
See the version list below for details.
dotnet add package Simple.Sqlite --version 0.6.2
NuGet\Install-Package Simple.Sqlite -Version 0.6.2
<PackageReference Include="Simple.Sqlite" Version="0.6.2" />
paket add Simple.Sqlite --version 0.6.2
#r "nuget: Simple.Sqlite, 0.6.2"
// Install Simple.Sqlite as a Cake Addin #addin nuget:?package=Simple.Sqlite&version=0.6.2 // Install Simple.Sqlite as a Cake Tool #tool nuget:?package=Simple.Sqlite&version=0.6.2
SqliteWrapper
A very simple Sqlite wrapper to plug spiders with it
Compatibility
Huge compatibility, supports:
- NET 5.0
- NetCore 3.1
- Net Framework 4.5
- Net Standard 2.0
Table of Contents
- SqliteWrapper
- SqliteDB - Sqlite wrapper
- NoSqliteStorage - No-sql document storage
- ConfigurationDB - Configuration storage
- Backup
- Reutilizing types
Modules and Options
There are three modules in this package
- SqliteDB → Sqlite wrapper
- No-sql document storage
- Configuration storage
How to get started:
Look at the examples int the project Test and the Samples folder
Or follow any of examples bellow
SqliteDB - Sqlite wrapper
Sqlite database to store data in tables
On new instance all database are backed up locally, see more here
How to use:
// Create a new instance
SqliteDB db = new SqliteDB("myStuff.db");
// Create a DB Schema
db.CreateTables()
.Add<MyData>()
.Commit();
var d = new MyData()
{
//fill your object
};
// call INSERT
db.Insert(d);
// use GetAll to retrieve all data
var allData = db.GetAll<MyData>();
// Use queries to get back data
var allBobs = db.ExecuteQuery<MyData>("SELECT * FROM MyData WHERE MyName = @name ", new { name = "bob" });
What this module automates ?
Auto fill parameters
This library provides a Query operation similar to Dapper, it can return a query as an Enumerable of your class
var allData = db.GetAll<MyData>();
And supports objects (even anonymous) as parameters
var allBobs = db.ExecuteQuery<MyData>("SELECT * FROM MyData WHERE MyName = @name ", new { name = "bob" });
Also, it supports easy Insertion
var d = new MyData()
{
//fill your object
};
// call INSERT
db.Insert(d);
And a VERY efficient, transaction based BulkInsertion
MyData[] lotsOfData = getLotsOfData();
// call INSERT
db.BulkInsert(lotsOfData);
Tip: For multi-million insertion, 5k blocks are a good start point
Migration
This library has a very simple Migration tah can:
- Create new tables
- Add columns to existing tables
To update your db schema just call CreateTables() and add your classes with Add<T>
and then Commit()
// Create a new instance
SqliteDB db = new SqliteDB("myStuff.db");
// Create a DB Schema
var migrationResult = db.CreateTables()
.Add<MyData>()
.Commit();
A TableCommitResult
will be returned with all changes made
This command will not migrate DATA only the schema
You can make changes on the table definition before it commits with:
db.CreateTables()
.Add<MyData>()
.ConfigureTable(t => { /* change last added table here */ })
.Add<NextTable>()
.Commit();
You can use Attributes on your properties to create columns marked with:
- PrimaryKey
- Allow Null
- Not Null
- Default Value
- Unique
// column tweak example
db.CreateTables()
.Add<MyData>()
.ConfigureTable(t => t["MyId"].IsUnique = true)
.Commit();
Also,
- Int properties with PK Attribute is also created as Auto-Increment
- If neither Not-Null nor Allow-Null is applied, the library will assume by the attribute type
NoSqliteStorage - No-sql document storage
Need a fast to setup, no-installation no-sql database ? This module get you covered
Your data will be stored encoded (serialized) with BSON
How to use:
// create a new instance
NoSqliteStorage db = new NoSqliteStorage("myStuff.db");
// build your complex type
MyData d = new MyData()
{
MyId = (int)DateTimeOffset.Now.ToUnixTimeSeconds(),
MyName = "My name is bob",
MyBirthDate = DateTime.Now,
MyUID = Guid.NewGuid(),
MyWebsite = new Uri("http://example.com"),
MyDecimalValue = 123.4M,
MyDoubleValue = 456.7,
MyFloatValue = 789.3f,
MyEnum = MyData.eIntEnum.Zero,
};
// Store it serialized with BSON
db.Store(d.MyUID, d);
// simple call Retrieve<T> to get your data deserialized back
var d2 = db.Retrieve<MyData>(id);
What this module automates ?
No-install, ready to use no-sql database
- No tables
- No migration
- no-nothing 'relational'
ConfigurationDB - Configuration storage
Need to store some options or user settings ? This module will cover that
How to use:
// Create a new instance
ConfigurationDB db = new ConfigurationDB("myStuff.db");
// store your data with Key-Category pair
db.SetConfig<string>("Font", "User.UI.FrontPanel", "Arial");
db.SetConfig<Color>("BackColor", "User.UI.FrontPanel", Color.Red);
// retrieve your data with "default option"
var myFont = db.GetConfig<string>("Font", "User.UI.FrontPanel", "Times");
var myBkg = db.GetConfig<Color>("BackColor", "User.UI.FrontPanel", Color.Green);
// remove config
db.RemoveConfig("Font", "User.UI.FrontPanel");
What this module automates ?
This automates various configuration save-set scenarios
Natively supported types:
- All C# "primitive" types
- string
- decimal
- DateTime
- TimeSpan
- Guid
- byte[]
- System.Drawing.Color
Primitive types is all types that type.IsPrimitive == true. Is all types you expect to be primitives: int, float, double, byte, etc...
Check all on this MSDN article
Backup
When a new SqliteDB instance is created a new backup of the database file is made.
As NoSqliteStorage and ConfigurationDB internally uses SqliteDB, they also create a backup
First, the database file is copied and compressed as *.bak.gz
Later backups, the old *.bak.gz
is renamed to *.old.gz
and a new *.bak.gz
is created
See an example with a database named data.db
:
- On first execution, there is no file
- a new empty
data.db
will be created - a new also empty
data.db.bak.gz
is created
- a new empty
- On later execution,
- the backup
data.db.bak.gz
will be renamed todata.db.old.gz
- a new
data.db.bak.gz
will be created fromdata.db
- the backup
Every execution, you have the previous version available as a backup
- To disable backups, you can use the static property as follows:
//this will disable the creation of backups of any posterior instances
SqliteDB.EnabledDatabaseBackup = false;
//this is specially useful when the database reaches a significant size
If you decided to use multiple instances with the same database file, you can avoid multiple backups by reutilizing types
Reutilizing types
If you already have a database and want to stick more stuff to it, you can simply:
- Already have a SqliteDB instance ?
var noSql = NoSqliteStorage.FromDB(mySqliteDB);
var cfg = ConfigurationDB.FromDB(mySqliteDB);
- Already have a NoSqliteStorage instance ?
var db = SqliteDB.FromDB(noSql);
var cfg = ConfigurationDB.FromDB(mySqliteDB);
- Already have a ConfigurationDB instance ?
var db = SqliteDB.FromDB(cfg);
var noSql = NoSqliteStorage.FromDB(cfg);
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 is compatible. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net45 is compatible. net451 was computed. net452 was computed. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETCoreApp 3.1
- Newtonsoft.Json.Bson (>= 1.0.2)
- Simple.DatabaseWrapper (>= 1.0.8)
- System.Data.SQLite.Core (>= 1.0.113.7)
-
.NETFramework 4.5
- Newtonsoft.Json.Bson (>= 1.0.2)
- Simple.DatabaseWrapper (>= 1.0.8)
- System.Data.SQLite.Core (>= 1.0.113.7)
-
.NETStandard 2.0
- Newtonsoft.Json.Bson (>= 1.0.2)
- Simple.DatabaseWrapper (>= 1.0.8)
- System.Data.SQLite.Core (>= 1.0.113.7)
-
net5.0
- Newtonsoft.Json.Bson (>= 1.0.2)
- Simple.DatabaseWrapper (>= 1.0.8)
- System.Data.SQLite.Core (>= 1.0.113.7)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Simple.Sqlite:
Package | Downloads |
---|---|
RafaelEstevam.Simple.Spider.SqliteStorage
Sqlite-based storage engine to the SimpleSpider See examples and documentation on the GitHub page |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
1.4.2 | 141 | 8/26/2024 | |
1.4.1 | 184 | 6/30/2024 | |
1.4.0 | 125 | 6/30/2024 | |
1.3.2 | 104 | 6/18/2024 | |
1.3.1 | 167 | 5/6/2024 | |
1.2.0 | 150 | 3/26/2024 | |
1.1.0 | 132 | 1/22/2024 | |
1.0.6 | 191 | 11/28/2023 | |
1.0.5 | 419 | 8/26/2023 | |
1.0.4 | 412 | 6/23/2023 | |
1.0.3 | 176 | 5/21/2023 | |
1.0.2 | 272 | 3/9/2023 | |
1.0.1 | 316 | 1/27/2023 | |
1.0.0.4-rc | 145 | 12/20/2022 | |
1.0.0.3-rc | 144 | 11/23/2022 | |
1.0.0.2-rc | 191 | 11/23/2022 | |
1.0.0.1-rc | 144 | 11/16/2022 | |
0.9.1.3 | 390 | 11/23/2022 | |
0.9.1.2 | 370 | 11/23/2022 | |
0.9.1.1 | 364 | 11/2/2022 | |
0.9.1 | 429 | 8/6/2022 | |
0.9.0.1 | 448 | 7/29/2022 | |
0.8.5.4 | 566 | 2/14/2022 | |
0.8.5.3 | 432 | 2/8/2022 | |
0.8.5.2 | 454 | 1/23/2022 | |
0.8.5.1 | 293 | 1/8/2022 | |
0.8.5 | 310 | 1/1/2022 | |
0.8.4.1 | 290 | 12/31/2021 | |
0.8.4 | 1,053 | 11/20/2021 | |
0.8.3 | 773 | 11/7/2021 | |
0.8.2-alpha | 291 | 10/8/2021 | |
0.8.1-alpha | 238 | 8/18/2021 | |
0.8.0-alpha | 398 | 8/11/2021 | |
0.7.4.1 | 409 | 10/15/2021 | |
0.7.4 | 405 | 10/8/2021 | |
0.7.4-alpha | 242 | 8/8/2021 | |
0.7.3 | 430 | 8/3/2021 | |
0.7.2 | 537 | 7/25/2021 | |
0.6.4 | 539 | 5/3/2021 | |
0.6.3 | 435 | 5/1/2021 | |
0.6.2 | 395 | 4/27/2021 | |
0.6.1 | 516 | 3/27/2021 | |
0.5.118 | 449 | 3/14/2021 | |
0.5.100 | 575 | 1/24/2021 | |
0.4.94 | 352 | 1/23/2021 | |
0.4.93 | 406 | 1/23/2021 | |
0.4.90 | 435 | 1/21/2021 | |
0.4.79 | 562 | 1/15/2021 | |
0.4.68 | 483 | 1/6/2021 | |
0.4.63 | 656 | 12/30/2020 | |
0.4.43 | 689 | 12/21/2020 | |
0.4.29 | 561 | 12/19/2020 | |
0.4.24 | 715 | 12/19/2020 | |
0.4.21 | 822 | 12/19/2020 | |
0.1.1 | 484 | 11/5/2020 | |
0.1.0 | 551 | 11/5/2020 |
Paired with commit d973a16
https://github.com/RafaelEstevamReis/SqliteWrapper