Nishikant Tayade Ответов: 1

Как динамически добавлять столбцы в базу данных sqlite?


Я работаю над настольным приложением.

Таким образом, на передней панели есть различные кнопки, и щелчок по этой кнопке извлекает информацию из аппаратного обеспечения, подключенного к ПК через последовательный порт, и сохраняет эти данные в базе данных и показывает информацию.

Проблема заключается в том, что если я создам таблицу в своей базе данных с 18 столбцами и предположу, что для извлечения информации требуется 19 столбцов, то мне придется добавить 1 столбец во время выполнения.

то же самое, если требуется меньше нет столбцов.

Что я уже пробовал:

1.я читал о подслушивании, но ничего не понял.

2.я думал о том, чтобы взять максимальное количество требуемых столбцов и просто показать или не показать их на переднем конце.

1 Ответов

Рейтинг:
1

OriginalGriff

Вы можете добавлять столбцы, но это сложно - не в самом коде, а в команде SQL ALTER TABLE: Инструкция SQL ALTER TABLE[^] - проблема заключается в существующих данных в таблице.
Если у вас есть 18 столбцов, и вы добавляете 19-й, какое значение должно входить в этот столбец для существующих строк? Вы можете присвоить новой таблице атрибут NULL, и в этом случае существующие строки получат нулевые значения, но если вы это сделаете, вам все равно придется иметь дело с этими нулями в вашем программном обеспечении для презентаций позже. И... если ваша таблица содержит значительное количество строк, это может быть крайне неэффективно, так как SQL должен создать целую новую таблицу и скопировать в нее существующие данные, прежде чем удалять старую таблицу.

Мое личное ощущение заключается в том, что вы делаете что-то не так: я был бы включен, чтобы спросить себя: "почему это устройство дает мне другое количество строк?", "когда количество строк меняется, меняется ли порядок строк?", "будет ли это означать, что существующие данные больше не находятся в правильном столбце?" и "что произойдет, если устройство решит отправить мне меньше столбцов?"
Все это может иметь серьезные последствия для надежности вашего кода и целостности данных позже - и как только вы получите проблемы с целостностью данных, они станут кошмаром для исправления!