search
HomeDatabaseMysql TutorialMySQL存入图片+Qt读入读出数据库中的图片_MySQL

还记得之前的一个项目里要向数据库中存入图片,然后Qt要在数据库中读入读出图片,当时纠结了好久,查阅了很多资料才解决,所以希望本文能给需要朋友点帮助。好了废话不多说,下面开始讲实现步骤。

1.MySQL存入图片

首先建表时要声明字段的类型为longblob类型,如下:

create table `sfood`(
`name` varchar(255) not null,
`type` varchar(255) not null,
`material` varchar(255) not null,
`price` int(200) not null,
`feature` varchar(255) not null,
`image` longblob,
primary key(`name`)
)ENGINE=innodb default charset=gb2312;

image就是我的图片字段,声明为longblob类型,表示食物的图片。

然后往表中插入数据:

insert into sfood(name,type,material,price,feature,image) values('生水白菜','川菜','白菜,生水',8,'清淡',LOAD_FILE('G:\\images\\chuancai\\baicai.jpg'));

这里LOAD_FILE('G:\\images\\chuancai\\baicai.jpg')的作用就是往image字段写入图片,这里用的是绝对路径,表示你图片所在的位子。这是在windows下,如果是在Linux下,要把目录间隔改成//。

这样我们就已经在数据库里写入了图片了。

2.在Qt里如何把图片从数据库里面读出来,接下来的代码都是以上面的表sfood为例:

 

QString select = "select * from sfood";
query.exec(select);
if( query.next() )
{
	QLabel *PicLabel = new QLabel();

QPixmap photo;
    photo.loadFromData(query.value(5).toByteArray(), "JPG"); //从数据库中读出图片为二进制数据,图片格式为JPG,然后显示到QLabel里
    PicLabel->setPixmap(photo);
    PicLabel->setScaledContents(true);
}

3.通过Qt往数据库中写入图片


query.exec("select * from sfood where name='"+nameEdit->text()+"'"); //我这里本段代码是添加菜品,该句是查询是否有该菜,按名字查询
    if(query.next())
    {
        QMessageBox::information(this,tr("警告"),tr("该菜已在数据库存储了"));
        db.Close();
        return;
    }
    query.prepare("insert into sfood(name,type,material,price,feature,image) values(?,?,?,?,?,?)");
    query.addBindValue(nameEdit->text());
    query.addBindValue(typeEdit->text());
    query.addBindValue(materialEdit->toPlainText());
    query.addBindValue(priceEdit->text());
    query.addBindValue(featureEdit->text());

    //接下来代码是保存图片到数据库
    imagePath.replace("\\","/");  //转换路径格式,imagePath是图片文件的路径,我这里用的是绝对路径
    /*imagePath的获得方法可以这样写:
imagePath = QFileDialog::getOpenFileName(this, tr("Open File"),
                                                           "/home",
                                                          tr("Images (*.jpg)"));
    */
    
    QByteArray bytes;
    QBuffer buffer(&bytes);
    buffer.open(QIODevice::WriteOnly);
    pictureLabel->pixmap()->save(&buffer,"JPG");
    
    
    QByteArray data;
    QFile* file=new QFile(imagePath); //file为二进制数据文件名

    file->open(QIODevice::ReadOnly);
    data = file->readAll();
    file->close();
    QVariant var(data);
    query.addBindValue(var);

    query.exec();

ok,已经通过Qt将图片写入数据库了。

没什么技巧,希望可以帮到跟我一样需要的菜鸟,也期望有师兄指教错误或者是有更好的方法。

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
What Are the Limitations of Using Views in MySQL?What Are the Limitations of Using Views in MySQL?May 14, 2025 am 12:10 AM

MySQLviewshavelimitations:1)Theydon'tsupportallSQLoperations,restrictingdatamanipulationthroughviewswithjoinsorsubqueries.2)Theycanimpactperformance,especiallywithcomplexqueriesorlargedatasets.3)Viewsdon'tstoredata,potentiallyleadingtooutdatedinforma

Securing Your MySQL Database: Adding Users and Granting PrivilegesSecuring Your MySQL Database: Adding Users and Granting PrivilegesMay 14, 2025 am 12:09 AM

ProperusermanagementinMySQLiscrucialforenhancingsecurityandensuringefficientdatabaseoperation.1)UseCREATEUSERtoaddusers,specifyingconnectionsourcewith@'localhost'or@'%'.2)GrantspecificprivilegeswithGRANT,usingleastprivilegeprincipletominimizerisks.3)

What Factors Influence the Number of Triggers I Can Use in MySQL?What Factors Influence the Number of Triggers I Can Use in MySQL?May 14, 2025 am 12:08 AM

MySQLdoesn'timposeahardlimitontriggers,butpracticalfactorsdeterminetheireffectiveuse:1)Serverconfigurationimpactstriggermanagement;2)Complextriggersincreasesystemload;3)Largertablesslowtriggerperformance;4)Highconcurrencycancausetriggercontention;5)M

MySQL: Is it safe to store BLOB?MySQL: Is it safe to store BLOB?May 14, 2025 am 12:07 AM

Yes,it'ssafetostoreBLOBdatainMySQL,butconsiderthesefactors:1)StorageSpace:BLOBscanconsumesignificantspace,potentiallyincreasingcostsandslowingperformance.2)Performance:LargerrowsizesduetoBLOBsmayslowdownqueries.3)BackupandRecovery:Theseprocessescanbe

MySQL: Adding a user through a PHP web interfaceMySQL: Adding a user through a PHP web interfaceMay 14, 2025 am 12:04 AM

Adding MySQL users through the PHP web interface can use MySQLi extensions. The steps are as follows: 1. Connect to the MySQL database and use the MySQLi extension. 2. Create a user, use the CREATEUSER statement, and use the PASSWORD() function to encrypt the password. 3. Prevent SQL injection and use the mysqli_real_escape_string() function to process user input. 4. Assign permissions to new users and use the GRANT statement.

MySQL: BLOB and other no-sql storage, what are the differences?MySQL: BLOB and other no-sql storage, what are the differences?May 13, 2025 am 12:14 AM

MySQL'sBLOBissuitableforstoringbinarydatawithinarelationaldatabase,whileNoSQLoptionslikeMongoDB,Redis,andCassandraofferflexible,scalablesolutionsforunstructureddata.BLOBissimplerbutcanslowdownperformancewithlargedata;NoSQLprovidesbetterscalabilityand

MySQL Add User: Syntax, Options, and Security Best PracticesMySQL Add User: Syntax, Options, and Security Best PracticesMay 13, 2025 am 12:12 AM

ToaddauserinMySQL,use:CREATEUSER'username'@'host'IDENTIFIEDBY'password';Here'showtodoitsecurely:1)Choosethehostcarefullytocontrolaccess.2)SetresourcelimitswithoptionslikeMAX_QUERIES_PER_HOUR.3)Usestrong,uniquepasswords.4)EnforceSSL/TLSconnectionswith

MySQL: How to avoid String Data Types common mistakes?MySQL: How to avoid String Data Types common mistakes?May 13, 2025 am 12:09 AM

ToavoidcommonmistakeswithstringdatatypesinMySQL,understandstringtypenuances,choosetherighttype,andmanageencodingandcollationsettingseffectively.1)UseCHARforfixed-lengthstrings,VARCHARforvariable-length,andTEXT/BLOBforlargerdata.2)Setcorrectcharacters

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor