Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

SQL C++ Forms Помогите написать или скажите возможно ли это?

Natsu Ученик (219), закрыт 4 недели назад
я знаю что нужно CREATE TABLE потом название и значение. А можно ли сделать так, чтобы в текст бокс я написал название потом нажимал на кнопку и создалась таблица со столбцами.
Лучший ответ
Анонимус Мудрец (18799) 1 месяц назад
 #include <QApplication> 
#include <QWidget>
#include <QLineEdit>
#include <QPushButton>
#include <QVBoxLayout>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QMessageBox>

class TableCreator : public QWidget {
Q_OBJECT

public:
TableCreator(QWidget *parent = nullptr) : QWidget(parent) {
QVBoxLayout *layout = new QVBoxLayout(this);

tableNameInput = new QLineEdit(this);
tableNameInput->setPlaceholderText("Введите название таблицы");
layout->addWidget(tableNameInput);

createButton = new QPushButton("Создать таблицу", this);
layout->addWidget(createButton);

connect(createButton, &QPushButton::clicked, this, &TableCreator::createTable);

setLayout(layout);
}

private slots:
void createTable() {
QString tableName = tableNameInput->text();
if (tableName.isEmpty()) {
QMessageBox::warning(this, "Ошибка", "Название таблицы не может быть пустым.");
return;
}

// Подключение к базе данных (например, SQLite)
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("mydatabase.db");

if (!db.open()) {
QMessageBox::critical(this, "Ошибка", "Не удалось подключиться к базе данных.");
return;
}

// Формируем SQL-запрос для создания таблицы
QString sql = QString("CREATE TABLE %1 (id INTEGER PRIMARY KEY AUTOINCREMENT)").arg(tableName);

QSqlQuery query;
if (!query.exec(sql)) {
QMessageBox::critical(this, "Ошибка", "Не удалось создать таблицу: " + query.lastError().text());
} else {
QMessageBox::information(this, "Успех", "Таблица создана успешно!");
}

db.close();
}

private:
QLineEdit *tableNameInput;
QPushButton *createButton;
};

int main(int argc, char *argv[]) {
QApplication app(argc, argv);

TableCreator window;
window.setWindowTitle("Создание таблицы");
window.resize(300, 150);
window.show();

return app.exec();
}

#include "main.moc"
NatsuУченик (219) 1 месяц назад
Напиши пожалуйста ещё раз в комментарии, в mail случился баг и выше сообщение пустое
Остальные ответы
Jurijus Zaksas Искусственный Интеллект (448721) 1 месяц назад
Можно. Вопрос только - как твоя программа узнает, какие тебе нужны данные и метаданные? Вряд ли по одному названию таблицы догадается же, да?
NatsuУченик (219) 1 месяц назад
блин, вот с этим проблема. Поэтому и пушу щас везде где можно. А нельзя шаблоном? чтобы оно создавало одни и те же столбцы с типом данных ( то есть название их везде одинаковое), а менялось и добавлялось только название таблицы?
Похожие вопросы