1.首先初始化Mysql環境,設置Mysql默認單表大小
2.創建表
CREATE TABLE filedata(
id INT PRIMARY KEY AUTO_INCREMENT,
filename VARCHAR(255),
data MEDIUMBLOB
);
3.Qt代碼
3.1 Qt連接數據庫
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.";
}
3.2寫入文件到Mysql
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!";
}
}
3.3 從Mysql讀取文件到本地
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!";
}