Skip to content

abhinavminhas/QueryDB.NET

Repository files navigation

⚡QueryDB

QueryDB solution in .NET.

Build / Test codecov Quality Gate Status maintainer License: MIT NuGet

Security Rating Reliability Rating Maintainability Rating

QueryDB is a flexible database query framework designed to simplify querying and executing transactions across multiple database systems.

🌐 Supported Databases

📥 Download

The package is available and can be downloaded using nuget.org package manager.

🎯 .NET Supported Versions

Built on .NET Standard 2.0 - ( Supported Versions )

✨ Key Features

  • 🔍 Efficient data retrieval using query and command execution.
  • ➕ Execute scalar queries for single-value results.
  • ✏️ Execute non-query commands (e.g. INSERT, UPDATE, DELETE).
  • 🔄 Perform multi-command transactions while maintaining atomicity.
  • 🔁 Support for both Synchronous and Asynchronous operations.

🚀 Getting Started

  • Setup DBContext with the database of your choice :

    var dbContext = new DBContext(DB.<Database Type>, <Connection String>);
  • Execute DBContext commands :

    Execute DBContext Commands Synchronously
    var result = dbContext.FetchData(<Sql Statement>);
    var result = dbContext.FetchData<T>(<Sql Statement>);
    var result = dbContext.ExecuteScalar(<Sql Statement>);
    var result = dbContext.ExecuteScalar<T>(<Sql Statement>);
    var result = dbContext.ExecuteCommand(<Sql Statement>);
    var result = dbContext.ExecuteTransaction(<List of Sql Statements>);
    Execute DBContext Commands Asynchronously
    var result = dbContext.FetchDataAsync(<Sql Statement>);
    var result = dbContext.FetchDataAsync<T>(<Sql Statement>);
    var result = dbContext.ExecuteScalarAsync(<Sql Statement>);
    var result = dbContext.ExecuteScalarAsync<T>(<Sql Statement>);
    var result = dbContext.ExecuteCommandAsync(<Sql Statement>);
    var result = dbContext.ExecuteTransactionAsync(<List of Sql Statements>);

🧠 Examples

Data Retrieval

public class Orders
{
    public string Agent_Code { get; set; }
    public string Agent { get; set; }
    public string Agent_Name { get; set; }
    public string Agent_Location { get; set; }
    public string Cust_Code { get; set; }
    public string Customer { get; set; }
    public string Cust_Name { get; set; }
    public string Customer_Location { get; set; }
    public decimal Ord_Num { get; set; }
    public decimal Ord_Amount { get; set; }
    public decimal Advance_Amount { get; set; }
    public string Ord_Description { get; set; }
}

var sql = @"SELECT A.Agent_Code, A.Agent_Name, C.Cust_Code, C.Cust_Name, O.Ord_Num, O.Ord_Amount, O.Advance_Amount, O.Ord_Date, O.Ord_Description FROM Agents A INNER JOIN 
           Customer C ON C.Agent_Code = A.Agent_Code INNER JOIN 
           Orders O ON O.Cust_Code = C.Cust_Code AND O.Agent_Code = A.Agent_Code";

var data = new DBContext(DB.<Database Type>, <Connection String>).FetchData<Orders>(selectSql);
var agent = data.FirstOrDefault(X => X.Agent_Name == "Foo");

Transaction

// Create, Insert & Update
var statements = new List<string>
{
    "CREATE TABLE Employee (EmployeeID INT PRIMARY KEY, FirstName NVARCHAR(50), LastName NVARCHAR(50))",
    "INSERT INTO Employee VALUES ('E01', 'John', 'Wick')",
    "UPDATE Employee SET FirstName = 'Jack' LastName = 'Reacher' WHERE EmployeeID = 'E01'"
};
var dbContext = new DBContext(DB.MSSQL, MSSQLConnectionString);
var result = dbContext.ExecuteTransaction(statements);