您的位置:首页 > 编程语言 > Qt开发

Qt与MySQL的连接与基本操作

2018-03-25 13:19 387 查看
Qt与MySQL间的通讯有两种方法.注:需要在.pro文件中添加,QT +=sql
方法一:使用SQL模型类,该方法是Qt中更高层的类来进行数据库的访问,不需要SQL语法知识。
QSqlTableModel是SQL表格模型,一次只能操作一个SQL表的读/写模型,可以浏览和修改独立的SQL表。
首先建立在MySQL中建立数据库phm_db,并建立一个campss_data的数据表。
(1)建立创建数据库连接的头文件db_connection.h#ifndef DB_CONNECTION_H
#define DB_CONNECTION_H

#include<QMessageBox>
#include<QSqlDatabase>

//创建一个默认的连接,即只有一个连接
static bool createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //数据库类型
db.setHostName("localhost"); //主机名
db.setDatabaseName("phm_db"); //数据库名称
db.setUserName("root"); //用户名
db.setPassword("123456"); //密码
if(!db.open())
{
QMessageBox::critical(0,"Cannot open database",
"Unable to establish a database connection",
QMessageBox::Cancel);
return false;
}
db.open();
return true;
}
#endif // DB_CONNECTION_H(2)使用方法,创建连接,然后建立一个QSqlModelTable对象model,对model进行相应操作即可显示表。//SQL表格模型。(模型/视图,MVC方法)
//显示表:cmapass_data
createConnection();
model = new QSqlTableModel(this);
model->setTable("cmapss_data");
model->select();
model->setEditStrategy(QSqlTableModel::OnManualSubmit); //设置编辑策略。
ui->tableView->setModel(model);
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置视图为只读模式结果显示如下:



方法二:通过Qt提供的数据库接口进行通讯,需要基本的SQL语句知识。
以登录界面与MySQL数据库中登录密码表进行校验为例。
(1)建立与数据库的连接,然后判断文本框中的内容是否与表中(第一行是序号,第二行是用户名,第三行是密码)内容相一致。建立数据库连接的方法同上,然后使用QSqlQuery结合SQL语句访问数据库内容。
注:db_login是自己建立的类//读取界面上的登录信息,与数据库内容比较验证
bool db_login::VerificationLogin(QString username, QString password)
{
//验证数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("phm_db");
db.setUserName("root");
db.setP
4000
assword("ckzhb");
if (db.open())
{
QSqlQuery query(db);
query.exec("select * from login_account");
while(query.next())
{
QString account = query.value(1).toString().trimmed(); //获取数据库登录表中的账号名
QString p = query.value(2).toString().trimmed(); //获取表中的密码
if((username.trimmed() == account) && (p.trimmed() == password))
return true;
}
db.close();
}
else
{
QMessageBox::critical(0,"Cannot open database",
"Unable to establish a database connection",
QMessageBox::Cancel);
return false;
}
}(2)使用db_login类,正确则进入下一个界面,错误将输入框清零并弹出警告信息。db_login database;
if (database.VerificationLogin(ui->lineEditAccount->text().trimmed(),ui->lineEditPassword->text().trimmed()))
{
//正确匹配
Func_Slet_Dialog *dialog = new Func_Slet_Dialog(this);
dialog->show();
}
else
{
QMessageBox::warning(this,tr("警告"),tr("请输入正确的用户名或密码!"),QMessageBox::Yes);
ui->lineEditAccount->clear();
ui->lineEditPassword->clear();
ui->lineEditAccount->setFocus();
this->show();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: