c++ - 创建新表并使用来自 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只是为了前后尝试不同的方法来获得这个作品。
解决方案
由于tlb是表格的占位符,而 name 是用户给出的 qstring,因此您的调用应如下所示:
query.bindValue(":'tlb'", name);
推荐阅读
- video - JMeter如何记录脚本以单击iframe标签中网页上显示的视频中的跳过按钮
- javascript - 为什么我的 json 文件中的对象最初在单击时以随机顺序加载?
- angular - ngrx/store 未显示表单的更新值
- android - onClickListener 方法中的捆绑包值问题
- amazon-rds - AWS RDS:如何获取当前活动/连接数?
- typescript - TypeScript - 仅提取接口成员 - 可能吗?
- mysql - MySQL,在除 id 之外的所有行中插入值
- visual-studio-2017 - CSX 输出目录不存在错误
- javascript - 将 JavaScript XML DOM 对象转换为具有特定结构的对象
- r - 在列表中合并两个 df 一对多 - R