Base de données d'opération Qt (accès comme exemple)

Préparatifs préliminaires:

Ajoutez QT + = sql dans le fichier .pro (s'il s'agit d'une programmation conjointe vs + Qt, vous devez vérifier SQL lors de la création du projet ou le définir dans les paramètres du projet Qt après la création) pour
introduire les fichiers d'en-tête: #include <QSqlDatabase> et #include <QSqlQuery>

Connectez-vous à la base de données d'accès:

SqlDatabase db;
db = QSqlDatabase::addDatabase("QODBC");
QString dbname = "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ=" QCoreApplication::applicationDirPath() + "//test.mdb";
db.setDatabaseName(dbname);

Opération de base:

Ajouter: (deux méthodes sont applicables à d'autres opérations)

QSqlQuery query;
QString  sqlstr = "insert into point values(?,?,?)";//?是占位符query.prepare(sqlstr);
query.bindValue(0, x);
query.bindValue(1, y);
query.bindValue(2, z)query.exec();//prepare用于准备含?的语句,exec用于执行
          或者 
QSqlQuery query;
QString  sqlstr = "insert into point values(1,2,3)"; 
query.exec(sqlstr);

Supprimer:

QSqlQuery query;
QString  sqlstr = " delete from point where x=1";
query.exec(sqlstr);

Changement:

QSqlQuery query;
QString  sqlstr = " update point set z=2,y=2 where x=1";
query.exec(sqlstr);

Vérifier:

QSqlQuery query;
QString  sqlstr = " select * from point where x>10";
query.exec(sqlstr);

Parcourez le contenu de la base de données:

Tout d'abord, nous devons ajouter des fichiers d'en-tête: #include <QTextStream>, #include <QStringList>, #include <QSqlIndex>, #include <QSqlRecord>, #include <QtDebug>, #include <QSqlError> Le
code spécifique est le suivant:

    QString out_str;
    QTextStream out(stdout);
    QSqlError err;
    QSqlRecord record;

    if (db.open()) {
        qDebug() << "link successful!";
        //读数据库中的表
        QStringList tables;//所有的表名
        QString tabName,sqlString;
        tables = db.tables(QSql::Tables);
        //读表中记录
        for (int i = 0; i < tables.size(); ++i){
            tabName = tables.at(i);
            qDebug()<<tabName;
            sqlString = "select * from " + tabName;//sql语句
            QSqlQuery q;
            q.exec(sqlString);
            QSqlRecord rec = q.record();//视图中所包含的所有记录
            int fieldCount = rec.count();//字段的数量
            qDebug() << "Number of columns: " << fieldCount;//每条记录所含的字段

            QString fieldName;//字段的名称
            for(int i=0;i<fieldCount;i++){
                fieldName = rec.fieldName(i);
                out<<fieldName<<"\t";
            }
            out<<endl;
            while(q.next()){
                for(int i=0;i<fieldCount;i++){
                    out<<q.value(i).toString();
                    out<<"\t";
                }
                out<<endl;
            }
        }
Publié 22 articles originaux · Likes2 · Visites 1157

Je suppose que tu aimes

Origine blog.csdn.net/qinqinxiansheng/article/details/105129610
conseillé
Classement