就是将文本文件中的数据导入到qt数据库当中,在网上找了挺多的都说的不清楚,最主要是我是小白,有大神教一下嘛
1条回答 默认 最新
- bostonAlen 2021-08-25 10:13关注
QT是可以对任何数据库操作的,而且连接和操作大同小异,基本上是sql语句和类型转化时的细微差别。
以mysql为例子假设你的建表语句如下
创建表
包含id、文件名、文件内容CREATE TABLE filedata( id INT PRIMARY KEY AUTO_INCREMENT, filename VARCHAR(255), data MEDIUMBLOB );
Qt连接mysql数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //添加数据库名称,这里写QMYSQL db.setHostName("127.0.0.1"); //设置数据库主机名 db.setDatabaseName("test"); //设置数据库名 db.setUserName("root"); //设置数据库用户名 db.setPassword("1234"); //设置数据库密码 if (!db.open()) { qDebug() << "Error: Failed to connect database." << db.lastError(); } else { qDebug() << "Succeed to connect database."; }
写入文件到Mysql
一般都是把文件数据转化成QByteArray,然后insert到数据库void WriteDataToMysql() { //选择要写入的文件 QString f = QFileDialog::getOpenFileName(); //转换为字节数组 QByteArray mapData; QFile file(f); file.open(QIODevice::ReadOnly); mapData = file.readAll(); file.close(); //插入数据 QSqlQuery query; query.prepare("INSERT INTO filedata values(:id,:name,:data)"); query.bindValue(":id", 1); query.bindValue(":name", "testName"); query.bindValue(":data", mapData); if (!query.exec()) { qDebug() << query.lastError(); } else { qDebug() << "inserted data successfully!"; } }
从Mysql读取文件到本地
读取就是读出来,调用toByteArray。
void Widget::readDataFromMysql()
{QSqlQuery readquery; QByteArray databa; if (readquery.exec("select data from filedata where name = 'testName'")) { QSqlRecord myrecord = readquery.record(); if (readquery.next()) { databa = readquery.value(myrecord.indexOf("data")).toByteArray(); //读取二进制对象 } } QFile mybfile("b.mov"); //写到本地文件,存什么后缀文件名就写什么 mybfile.open(QIODevice::WriteOnly); mybfile.write(databa); mybfile.close(); qDebug() << "write data successfully!";
}
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 eclipse运行项目时遇到的问题
- ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
- ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
- ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
- ¥50 成都蓉城足球俱乐部小程序抢票
- ¥15 yolov7训练自己的数据集
- ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
- ¥15 电力市场出清matlab yalmip kkt 双层优化问题
- ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
- ¥20 matlab yalmip kkt 双层优化问题