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 … в порядке списка.