目录
- 1、效果演示
- 2、创建数据库及表格
- 2.1 创建数据库
- 2.2 创建数据库表格
- 3、增删改查
- 3.1 增加记录
- 3.2 删除记录
- 3.3 修改记录
- 3.4 查找记录
- 3.5 遍历表格记录
1、效果演示
1)增删改查效果
2)数据库内容
2、创建数据库及表格
2.1 创建数据库
首先在.pro文件添加对sql的支持:Qt += core gui sql
QString g_connectName = "Mysql_connection";
bool MainWindow::createDatabase()
{
//检测已连接的方式 - 自定义连接名
if(QSqlDatabase::contains(g_connectName))
{
m_Projdb = QSqlDatabase::database(g_connectName);
}
else
{
m_Projdb = QSqlDatabase::aDDDatabase("QSQLITE",g_connectName);
//设置数据库路径
QString sDir = QApplication::applicationDirPath();
QString sDataPath = sDir + "/mysql.db";
m_Projdb.setDatabaseName(sDataPath);
}
//打开数据库
if(!m_Projdb.open())
{
QMessageBox::infORMation(this,"提示","数据库创建失败,无法打开!");
return false;
}
// 创建表格
createImageTable();
//关闭数据库
m_Projdb.close();
return true;
}
2.2 创建数据库表格
bool MainWindow::createImageTable()
{
…………………………
//如果不存在则创建my_table表,id自增,name唯一
const QString cmdSql = R"(
CREATE TABLE IF NOT EXISTS image_table (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
imagename TEXT NOT NULL,
type CHAR(50) NOT NULL,
notes TEXT,
imagedata BLOB NOT NULL
);)";
//QSqlQuery构造前,需要db已打开并连接;未指定db或者db无效时使用默认连接进行操作
QSqlQuery myQuery(m_Projdb);
if(!myQuery.exec(cmdSql))
{
QString sError = myQuery.lastError().text();
sError = "数据库表格插入数据失败:" + sError;
QMessageBox::information(this,"提示",sError);
m_Projdb.close();
return false;
}
…………………………
return true;
}
3、增删改查
3.1 增加记录
void MainWindow::on_pushBtn_add_clicked()
{
QString strImag = ui->lineEdit_file->text();
QFileInfo fileInfo(strImag);
………………
QString sName = fileInfo.fileName();
QString sType = fileInfo.suffix();
QString strNote = ui->plainTextEdit_add->toPlainText();
if(ImageFileExist(sName))
{
QMessageBox::information(this,"提示","图片文件已经存在!");
return;
}
//将数据转换为QByteArray类型存储到数据库中
QFile* pFile = new QFile(strImag);
pFile->open(QIODevice::ReadOnly);
QByteArray imageData = pFile->readAll();
pFile->fileName();
pFile->close();
if(!m_Projdb.open())
{
QMessageBox::information(this,"提示","数据库无法打开!");
return;
}
//QSqlQuery构造前,需要db已打开并连接;未指定db或者db无效时使用默认连接进行操作
QSqlQuery myQuery(m_Projdb);
QString cmdSql = "insert into image_table(imagename,type,notes,imagedata) values( '%1','%2','%3',:imagedata)";
cmdSql = QString(cmdSql).arg(sName).arg(sType).arg(strNote);
qDebug()