申明:作者本人也是QT新手,大一学生学软件一年,如有错误望包涵
1.首先需要在.pro中加入 QT += sql
2. .cpp中(最好都添加)
#include <QSqlDatabase>
#include <QSqlQueryModel>
#include <QSqlQuery>
3.数据库连接代码(在头文件中申明connectDB())
void Widget::connectDB()
{
QString sDbNm = "C:/Users/jos/Desktop/MdsDB.accdb";//数据库文件
/************* 此处数据库路径得修改成自己的! *********/
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");//设置数据库驱动
QString dsn = QString("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; FIL={MS Access};DBQ=%1;").arg(sDbNm);//连接字符串
db.setDatabaseName(dsn);//设置连接字符串
db.setUserName("");//设置登陆数据库的用户名
db.setPassword("");//设置密码
bool ok = db.open();
if (!ok) {
QMessageBox messageBox;
messageBox.setText("Database error");
messageBox.exec();
db.close();
}
}
4. 可能遇见无法找到sql***一类的报错,我的解决办法就是新建一个工程,重新添加所有文件,然后复制以前的代码粘贴进新的工程。如果是dialog,就新建一个设计师界面,它会自动添加头文件,source文件和ui界面,只需复制原来的.ui文件覆盖到新工程目录下。
5. 连接数据库(就是调用connectDB()函数)
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
connectDB();
}
*注意*connectDB()已经将数据库打开而且没有关闭数据库,所以在其他函数里不要再使用connectDB();正常情况下直接操作数据库就行了。
6. 操作数据库,使用sql语句,提供几种操作方法:
(一)QSqlQuery query;
query.prepare("SELECT * FROM table");
query.exec();
(二) QSqlQuery query;
query.exec("SELECT * FROM table");
(三)注意这种方法可以灵活改变sql语句
QString psd=xxxxx;
QString name=xxxxx;
QSqlQuery query;
query.prepare("UPDATE userinf SET userpsd=? where username=?");//修改数据
query.bindValue(0,psd);//替换第一个问号内容
query.bindValue(1,name);//替换第二个问号内容
query.exec();
(四)相似的方法
QString time=xxxxx;
QString path=xxxxx;
QSqlQuery query;
query.prepare("INSERT INTO table(uploadtime, picture) "
"VALUES (?, ?)");//插入语句
query.addBindValue(time);
query.addBindValue(path);
query.exec();
query.clear();//这个是清除执行得到的内容,如果数据不使用了可以清除掉
7. 使用数据(提供一种使用texe edit的)
QSqlQuery query;
query.prepare("select * from talentteammain");
query.exec();
while (query.next())/遍历查询的数据
{
ui->textEdit_id->setText(query.value(0).toString());
ui->textEdit_open->setText(query.value(1).toString());
}
query.clear();//Text Edit控件中显示你得到的数据