# JsonDB **Repository Path**: IoTSharp/Data.JsonDB ## Basic Information - **Project Name**: JsonDB - **Description**: C# 版本的 JsonDB , 把 Json作为 使用sql 来查询 - **Primary Language**: C# - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-08 - **Last Updated**: 2026-10-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

IoTSharp.Data.JsonDB logo IoTSharp.Data.JsonDB

IoTSharp.Data.JsonDB is a lightweight in-memory relational database engine that executes SQL queries over JSON data through a full ADO.NET interface. ## Features - SQL `SELECT`, `INSERT`, `UPDATE`, `DELETE` over JSON arrays and objects - `WHERE`, `GROUP BY`, `HAVING`, `ORDER BY` with `asc`, `desc`, `ascnum`, `descnum`, and `LIMIT` - SQLite-style basic aggregate functions: `COUNT`, `SUM`, `TOTAL`, `AVG`, `MIN`, `MAX`, `GROUP_CONCAT`, `STRING_AGG` - Arithmetic and boolean expressions with custom function registration - Path-style field access such as `profile.name` and `metrics.score` - Standard ADO.NET types: `DbConnection`, `DbCommand`, `DbDataReader`, `DbParameter`, `DbDataAdapter` - Parameterized queries with `@paramName` - JSON file, JSON string, and `System.Text.Json.Nodes.JsonNode` data sources - File-backed auto-save for `INSERT`, `UPDATE`, and `DELETE` ## Install ```powershell dotnet add package IoTSharp.Data.JsonDB ``` ## Quick Start ```csharp using IoTSharp.Data.JsonDB; var json = """[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]"""; using var conn = JsonDbConnection.FromJson(json); conn.Open(); using var cmd = conn.CreateCommand(); cmd.CommandText = "SELECT name FROM input WHERE id = @id"; cmd.Parameters.AddWithValue("@id", 1); var name = cmd.ExecuteScalar(); Console.WriteLine(name); // Alice ``` ## File-Backed JSON ```csharp using var conn = new JsonDbConnection("Data Source=data.json"); conn.Open(); using var cmd = conn.CreateCommand(); cmd.CommandText = "UPDATE input SET status = \"done\" WHERE id = 1"; cmd.ExecuteNonQuery(); ``` File-backed connections save mutations automatically by default. Set `conn.AutoSave = false` and call `conn.SaveToFile()` when manual persistence is preferred. ## Provider Factory ```csharp var factory = JsonDbProviderFactory.Instance; using var conn = (JsonDbConnection)factory.CreateConnection()!; conn.ConnectionString = "Data Source=data.json"; conn.Open(); ``` ## SQL Dialect ```sql SELECT field1, field2 AS alias FROM input WHERE status = "active" ORDER BY score DESCNUM LIMIT 0, 10 SELECT category, COUNT(*) AS count, AVG(score) AS averageScore FROM input GROUP BY category HAVING count > 1 ORDER BY averageScore DESCNUM INSERT INTO input SET id = 3, name = "Cora" UPDATE input SET score = score + 1 WHERE id = 3 DELETE FROM input WHERE id = 3 ``` ## Build ```powershell dotnet restore Data.JsonDB.slnx dotnet test Data.JsonDB.slnx -c Release dotnet pack src/IoTSharp.Data.JsonDB/IoTSharp.Data.JsonDB.csproj -c Release ``` NuGet publishing is handled by GitHub Actions when a tag starting with `v` is pushed, for example `v1.0.0`. ## Logo Assets - `assets/jsondb-logo-32.png` - `assets/jsondb-logo-48.png` - `assets/jsondb-logo-64.png` - `assets/jsondb-logo-128.png` - `assets/jsondb-logo-256.png` - `assets/jsondb-logo-512.png` - `assets/jsondb-logo-source.png`