首页 > 解决方案 > 创建新表并使用来自 QLineEdit 的用户输入对其进行命名

问题描述

我在我的树莓派上使用 QT5 制作了一个 MYSQL 数据库。到目前为止,已经完成了所有应用程序和 localhost,一切正常。我的问题是如何在按下按钮时从 UI 上的 qlineEdit 创建一个由用户命名的新表?

这是我为按钮插槽提供的代码:

void MainWindow::on_pushButton_clicked()
{
    QSqlQuery query;
    query.prepare( "CREATE TABLE `QT`.`tlb` ( `id` INT NOT NULL AUTO_INCREMENT , `desde` 
    VARCHAR(10) NOT NULL , `hasta` VARCHAR(10) NOT NULL , `name` VARCHAR(50) NOT NULL , 
    `color` TEXT NOT NULL , `circuits_qty` INT(65) NOT NULL , `customer` TEXT NULL , 
    `program` TEXT NULL , `family` TEXT NULL , `location` VARCHAR(40) NULL , `con1` 
    LONGBLOB NULL , `con2` LONGBLOB NULL , `con3` LONGBLOB NULL , `con4` LONGBLOB NULL , 
    `con5` LONGBLOB NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB");
    
    QString name;
    name = ui->lineEdit->text();
    query.bindValue(":'tlb', 'name'");
    // query.prepare("ALTER TABLE 'tlb' RENAME TO name;)
    query.exec();
}

正如你所看到的,只要我给出一个名字,代码就可以工作。但是当试图让用户给表命名时,什么也没有发生。我创建了一个 QString 以从 qlineEdit 存储名称中获取名称,然后尝试绑定它,但没有成功,然后尝试了一个更改表,但仍然没有任何反应。任何帮助都非常受欢迎。顺便说一句,注释掉alter table只是为了前后尝试不同的方法来获得这个作品。

标签: c++mysqlqt5

解决方案


由于tlb是表格的占位符,而 name 是用户给出的 qstring,因此您的调用应如下所示:

query.bindValue(":'tlb'", name);

推荐阅读