SELECT тянет все колонки. Чаще перечисляют явный список - так меньше данных и проще читать результат.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpDbCol 606 of 696 menu
◀ ▶

Выбор части столбцов в SQLite

Звездочка * в SELECT тянет все колонки.

Чаще перечисляют явный список - так меньше данных и проще читать результат. Таблица может хранить служебные поля, которые в отчет не попадают. В запросе оставляют только нужные имена:

#include <iostream> #include <sqlite3.h> int main() { sqlite3* db = nullptr; if (sqlite3_open("partial_view.db", &db) != SQLITE_OK) { std::cerr << sqlite3_errmsg(db) << "\n"; sqlite3_close(db); return 1; } char* err = nullptr; if (sqlite3_exec( db, "CREATE TABLE IF NOT EXISTS devices (" "id INTEGER PRIMARY KEY," "serial TEXT NOT NULL," "note TEXT," "warranty_until TEXT" ")", nullptr, nullptr, &err ) != SQLITE_OK) { std::cerr << err << "\n"; sqlite3_free(err); sqlite3_close(db); return 1; } if (sqlite3_exec( db, "INSERT INTO devices (serial, note, warranty_until) " "VALUES ('SN-44', 'lab unit', '2027-01-01')", nullptr, nullptr, &err ) != SQLITE_OK) { std::cerr << err << "\n"; sqlite3_free(err); sqlite3_close(db); return 1; } sqlite3_stmt* stmt = nullptr; if (sqlite3_prepare_v2( db, "SELECT serial, warranty_until FROM devices", -1, &stmt, nullptr ) != SQLITE_OK) { std::cerr << sqlite3_errmsg(db) << "\n"; sqlite3_close(db); return 1; } while (sqlite3_step(stmt) == SQLITE_ROW) { const char* serial = reinterpret_cast<const char*>( sqlite3_column_text(stmt, 0) ); const char* until = reinterpret_cast<const char*>( sqlite3_column_text(stmt, 1) ); std::cout << serial << "\n"; std::cout << until << "\n"; } sqlite3_finalize(stmt); sqlite3_close(db); return 0; }

Порядок имен в списке задает порядок столбцов в результате. Для одного значения по условию удобен подготовленный SELECT с параметром:

#include <iostream> #include <sqlite3.h> int main() { sqlite3* db = nullptr; if (sqlite3_open("partial_view.db", &db) != SQLITE_OK) { std::cerr << sqlite3_errmsg(db) << "\n"; sqlite3_close(db); return 1; } sqlite3_stmt* query = nullptr; if (sqlite3_prepare_v2( db, "SELECT note FROM devices WHERE serial = ?", -1, &query, nullptr ) != SQLITE_OK) { std::cerr << sqlite3_errmsg(db) << "\n"; sqlite3_close(db); return 1; } sqlite3_bind_text(query, 1, "SN-44", -1, SQLITE_STATIC); if (sqlite3_step(query) == SQLITE_ROW) { const char* note = reinterpret_cast<const char*>( sqlite3_column_text(query, 0) ); std::cout << note << "\n"; } sqlite3_finalize(query); sqlite3_close(db); return 0; }

Создайте таблицу lots в batch.db с полями code, qty и comment, добавьте партию и выведите только code и qty.

Выведите comment для партии с кодом "B-12", не выбирая остальные столбцы.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить