Sql

class · пространство имён z3n7 · исходник Db/Sql.cs

public class Sql : IDisposable

Одно открытое соединение с SQLite (через ODBC-драйвер SQLite3) или PostgreSQL (Npgsql). Вызови Dispose, чтобы закрыть соединение.

Примечания: Соединение открывается в конструкторе.

Конструкторы

Sql

public Sql(string dbPath, string dbPass)

исходник

Открывает базу SQLite через SQLite3 ODBC Driver.

Параметр Описание
dbPath Файл базы данных.
dbPass Не используется.
public Sql(string hostname, string port, string database, string user, string password)

исходник

Открывает соединение PostgreSQL с пулом.

public Sql(string connectionstring)

исходник

Открывает соединение PostgreSQL по строке подключения Npgsql.

public Sql(IDbConnection connection)

исходник

Оборачивает существующее соединение и открывает его, если оно закрыто.

Свойства

ConnectionType

public DatabaseType ConnectionType { get; }

исходник

SQLite для соединения ODBC, PostgreSQL для Npgsql, иначе Unknown.

Методы

AddRange

public async Task AddRange(int range, string tableName = null)

исходник

Вставляет строки с id от текущего максимума + 1 до range, по одному запросу на строку.

CopyTableAsync

public async Task<int> CopyTableAsync(string sourceTable, string destinationTable)

исходник

Создаёт destinationTable с колонками и первичным ключом sourceTable и копирует в неё все строки, в пределах одной базы.

Параметр Описание
sourceTable Источник; на PostgreSQL может быть schema.table.
destinationTable Таблица, которую нужно создать; её не должно быть.

Возвращает: Число скопированных строк.

CreateParameter

public IDbDataParameter CreateParameter(string name, object value)

исходник

Создаёт параметр команды нужного для провайдера типа; null превращается в DBNull.

CreateParameters

public IDbDataParameter[] CreateParameters(params (string name, object value)[] parameters)

исходник

Создаёт несколько параметров, см. CreateParameter.

DbRead

public string DbRead(string sql, string separator = "|")

исходник

Синхронный DbReadAsync с разделителем строк по умолчанию.

DbReadAsync

public async Task<string> DbReadAsync(string sql, string columnSeparator = "|", string rawSepararor = "\r\n")

исходник

Выполняет запрос и возвращает все строки текстом.

Параметр Описание
sql Запрос.
columnSeparator Чем соединять колонки строки.
rawSepararor Чем соединять строки.

DbWrite

public int DbWrite(string sql, params IDbDataParameter[] parameters)

исходник

Синхронный DbWriteAsync.

DbWriteAsync

public async Task<int> DbWriteAsync(string sql, params IDbDataParameter[] parameters)

исходник

Выполняет запрос, не возвращающий строк.

Возвращает: Число затронутых строк. Ошибки пробрасываются с добавленным текстом SQL.

Dispose

public void Dispose()

исходник

Закрывает соединение и освобождает его.

Get

public async Task<string> Get(string toGet, string id, string tableName = null, string where = null)

исходник

Читает первую колонку первой подходящей строки.

Параметр Описание
toGet Список колонок.
id Id строки, передаётся параметром.
tableName Таблица; обязательна.
where Сырое SQL-условие; если задано, id игнорируется.

Возвращает: Значение текстом или null.

MigrateAllTablesAsync

public static async Task<int> MigrateAllTablesAsync(Sql sourceDb, Sql destinationDb)

исходник

Копирует все пользовательские таблицы из одной базы в базу другого вида (PostgreSQL ↔ SQLite). Таблицы, которые уже есть в целевой базе, не пересоздаются, но строки всё равно вставляются. Таблица с ошибкой пропускается; ошибка выводится только в отладочный вывод.

Возвращает: Общее число скопированных строк.

Upd

public async Task<int> Upd(string toUpd, object id, string tableName = null, string where = null, bool last = false)

исходник

Выполняет UPDATE … SET toUpd для строки id или для строк, подходящих под where.

Параметр Описание
toUpd Присваивания; имена колонок берутся в кавычки.
id Id строки, подставляется как написан.
tableName Таблица; обязательна.
where Сырое SQL-условие; если задано, id игнорируется.
last Заодно записать в колонку last время UTC в формате MM-ddTHH:mm.

Возвращает: Число затронутых строк.

public async Task Upd(List<string> toWrite, string tableName = null, string where = null, bool last = false)

исходник

Выполняет Upd для каждого элемента с id 0, 1, 2 … в порядке списка.