Сократить код C++

204
04 апреля 2017, 12:38

Добрый вечер! Есть такой код

void ChangeDB::changePhotoLat(int id, double lat)
{
    query.prepare("UPDATE Points SET lat = :lat WHERE id = :id;");
    query.bindValue(":id", id);
    query.bindValue(":lat", lat);
    if (!query.exec()){
        qDebug() << "Error SQLite:" << query.lastError().text();
    }
}
void ChangeDB::changePhotoLon(int id, double lon)
{
    query.prepare("UPDATE Points SET lon = :lon WHERE id = :id;");
    query.bindValue(":id", id);
    query.bindValue(":lon", lon);
    if (!query.exec()){
        qDebug() << "Error SQLite:" << query.lastError().text();
    }
}

Такие функции мне нужно сделать для всех столбцов в бд. Как можно оптимально записать это дело?

Answer 1

как можно заметить, в этих функциях у вас меняется только название колонки. поэтому например можно названия всех столбцов сохранить в массиве

QStringList columns[] = {"lat", "lon", ...}

тогда вам нужна будет только одна функция которая принимает этот массив в качестве параметра в которой можно пройтись по этому циклу и обновить этот столбец в базе данных

void ChangeDB::changePhotoL(int id, double c, const QStringList& columns);

READ ALSO
Как проверить инициализирован ли opengl?

Как проверить инициализирован ли opengl?

Как проверить инициализирован ли OpenGL, функцией glutInit(&argc, argv)?

310
Функция чтения аргументов с файла C++

Функция чтения аргументов с файла C++

В файле, в каждой строке записано по два целочисленные аргумента через пробел, требуется считать эти аргументы с каждой строки файла и записать...

241
странный синтаксис

странный синтаксис

очень неясно как работает данный код

295
Не открывается окошко QQuickView в проекте

Не открывается окошко QQuickView в проекте

Если запускаю проект из Qt Creator, все работает нормальноНо если пытаюсь сделать сборку, то окошко с qml не открывается

307