使用Qt将图片存储到sqlite
my_sql::my_sql(QWidget *parent)
: QWidget(parent)
, ui(new Ui::my_sql)
{
ui->setupUi(this);
connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(slot_StoreSql()));
connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(slot_redImag()));
isFile(DATABASEPATH);
}
bool my_sql::isFile(QString strPath)
{
QFile file(strPath);
if(file.exists())
{
qDebug()<<"数据库文件存在";
m_Base = dataBase::Instance(DATABASEPATH);
return true;
}
else
{
qDebug()<<"数据库文件不存在";
m_Base = dataBase::Instance(DATABASEPATH);
QString strSql("create table if not exists imagetable(filename TEXT,imagedata BLOB)");
m_Base->createTable(strSql);
return false;
}
}
void my_sql::slot_StoreSql()
{
qDebug()<<"读取图片并保存数据库";
imagPath = QFileDialog::getOpenFileName(this,"图片","C:\\Users\\lanti\\Pictures","(*.jpg *.jpeg *.png)");
qDebug()<<imagPath;
ui->label->setPixmap(QPixmap(imagPath));
QString insertntoSql = "insert into imagetable(filename,imagedata) values( \"%1\",:imagedata)";
m_Base->insertnto(insertntoSql,imagPath);
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/d2ae1f48bc564eeea9048195434b428d.png)
void dataBase::insertnto(QString Sql,QString strImag)
{
db.open();
if(!db.open()) {
qDebug()<<"Failed to connect to root mysql admin";
}
else {
qDebug()<<"open success!";
}
QFile * file=new QFile(strImag);
file->open(QIODevice::ReadOnly);
QByteArray data = file->readAll();
file->close();
QSqlQuery query;
Sql = QString(Sql).arg(file->fileName());
qDebug()<<Sql<<"------------------";
query.prepare(Sql);
query.bindValue(":imagedata",data);
if(!query.exec())
{
printf("insert error");
printf(query.lastError().text().toLocal8Bit().data());
printf("n");
}
else
{
printf("insert ok");
}
db.close();
}
void my_sql::slot_redImag()
{
QString m_image("C:\\temp\\666.jpg");
QString Sql="select * from imagetable where filename = \"%1\"";
QImage image = m_Base->selectImag(Sql,imagPath);
image.save(m_image);
ui->label_2->setPixmap(QPixmap(m_image));
}
QImage dataBase::selectImag(QString Sql, QString strImag)
{
db.open();
if(!db.open()) {
qDebug()<<"Failed to connect to root mysql admin";
}
else {
qDebug()<<"open success!";
}
QImage img;
Sql = QString(Sql).arg(strImag);
qDebug()<<Sql<<"***************";
QSqlQuery query(Sql);
if(!query.exec(Sql))
{
qDebug()<<"select "<<query.lastError().text();
}
while(query.next())
{
QString code = query.value(0).toString();
QByteArray bytes = query.value(1).toByteArray();
QBuffer buffer(&bytes);
buffer.open(QIODevice::ReadOnly);
QImageReader reader(&buffer,"JPG");
img = reader.read();
}
db.close();
return img;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/ae5434a05e7d40cbab84946ac14c9834.png)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)