База данных
В z3n7 два способа работать с базой. Оба поддерживают PostgreSQL и SQLite (SQLite — через драйвер SQLite3 ODBC, он должен быть установлен).
Класс Db
Db получает настройки подключения явно или из проекта:
// явные настройки
var db = new Db("SQLite", sqLitePath: @"C:\data\accounts.db", defaultTable: "accounts");
// из проекта: DBmode, DBsqltPath и глобальные переменные sqlPg*
var db = new Db(project);
string balance = db.Get("balance", id: 5); // одна строка по id
var row = db.GetColumns("login, proxy", id: 5); // колонка → значение
db.Upd("status = 'ok'", id: 5);
Каждый запрос открывает своё подключение. SELECT возвращает строки, склеенные через ·, и колонки через ¦.
Помощники project.Db*
Методы расширения DbGet, DbUpd, DbQ и другие работают с базой из переменной dbSource (переменная проекта, иначе глобальная):
- значение, начинающееся с
Host=, — строка подключения PostgreSQL; - любое другое значение выбирает SQLite; тогда DbQ открывает файл из своего аргумента
sqLitePath, а помощникиDb*его не передают.
Если не сказано иное, они работают со строкой текущего аккаунта: таблица по умолчанию — таблица проекта (__{имя проекта}), строка — id = acc0.
project.Var("acc0", "7");
string login = project.DbGet("login"); // __myproject, id = 7
project.DbUpd("status = 'done'"); // та же строка
project.DbDone("daily", cooldownMin: 60); // метка «кулдауна»
var proxy = project.DbGet("proxy", "_instance"); // другая таблица, тот же аккаунт
Подготовка таблицы
// id + перечисленные колонки + по колонке на каждый пункт cfgToDo
project.PrepareProjectTable(new List<string> { "login", "status", "daily" });
project.AddRange(project.Var("projectTable")); // строки 1..rangeEnd
PrepareProjectTable создаёт таблицу при необходимости и добавляет недостающие колонки; prune удаляет лишние, rearrange упорядочивает.
Соглашения
id— номер аккаунта.- Значения в
idи внутриwhereпопадают в SQL как есть; текст заключайте в кавычки сами. - В условиях выбора аккаунта слово
NOWзаменяется текущим временем в форматеyyyy-MM-ddTHH:mm:ss(см. 06. Работа с аккаунтом). - Таблицы самой библиотеки:
_instance(прокси, cookies, WebGL аккаунта),_api(учётные данные внешних сервисов поid),_processes(ProcessManager).
См. также: База данных, API Db.