Qt访问MySQL代码

#include <QtCore>

#include <QtGui>

#include <QtSql>

#include "widget.h"

 

int main(int argc, char *argv[])

{

    QApplication a(argc, argv);

    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));

    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF8"));

    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF8"));

 

    QTextEdit display;

    display.resize(400, 160);

    display.show();

 

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

    db.setHostName("localhost");

    db.setDatabaseName("example");

    db.setUserName("root");

    db.setPassword("root");

    db.exec("SET NAMES 'UTF8'");

 

    bool ok = db.open();

    if (ok) {

        QSqlQuery query;        

 

        query.prepare("insert into employee values(:id, :lname, :fname, :dob, :phone)");

        query.bindValue(":id", "1");

        query.bindValue(":lname", "郑");

        query.bindValue(":fname", "国锋");

        query.bindValue(":dob", "1989-06-25");

        query.bindValue(":phone", "15837802428");

        query.exec();

 

        QSqlQuery q2;

        q2.prepare("insert into employee values(?, ?, ?, ?, ?)");

        q2.addBindValue("2");

        q2.addBindValue("Donald");

        q2.addBindValue(" Knuth");

        q2.addBindValue("2012-02-02");

        q2.addBindValue("12345678999");

        q2.exec();

 

        query.exec("insert into employee values('3', '诸葛', '流云', '2010-06-09', '98765432100')");

        query.exec("update employee set firstname='孔明' where id='3'");

        query.exec("delete from employee where id='3'");

 

        if (db.driver()->hasFeature(QSqlDriver::Transactions)) {

            db.transaction();

            query.exec("select lastname from employee where id='1'");

            if (query.next()) {

                QString str = "中国";

                query.exec("insert into employee(lastname) values('"+str+"')");

                QString str2 = "China";

                query.exec("insert into employee(lastname) values('"+str2+"')");                            }

            db.commit();

        }

 

        QSqlQueryModel queryModel;

        queryModel.setQuery("select * from employee");

        QString str3 = "";

        for (int num = 0; num < queryModel.rowCount(); ++num) {

            str3 += queryModel.record(num).value("id").toString();

            str3 += " # ";

            str3 += queryModel.record(num).value("lastname").toString();

            str3 += "/n";

        }

        display.append(str3);

 

 

        QSqlTableModel tm;

        tm.setTable("employee");

        //tm.setFilter("id != NULL");

        tm.select();

        QString str4;

        for (int num = 0; num < tm.rowCount(); ++num) {

            QSqlRecord record = tm.record(num);

            record.setValue("lastname", record.value("lastname").toString() + "修改");

            tm.setRecord(num, record);

 

            str4 += tm.record(num).value("id").toString();

            str4 += "*";

            str4 += tm.record(num).value("lastname").toString();

            str4 += "/n";

        }

        if (tm.submitAll()) {

            display.append("修改成功!");

        } else {

            display.append("修改失败!");

        }

        display.append(str4);

        tm.setData(tm.index(0, 1), "哈哈");

        tm.setData(tm.index(0, 0), "AAAAAAA");

        if (tm.submitAll()) {

            display.append("修改成功啦!");

        }

 

 

        tm.removeRow(2);

        if (tm.submitAll()) {

            display.append("删除成功喽,呵呵!/n");

        } else {

            display.append("删除失败喽,呜呜.../n");

        }

 

        QSqlRecord record2 = tm.record();

        record2.setValue("lastname", "插入的");

        tm.insertRecord(2, record2);

 

        QTableView *view = new QTableView;      

        view->setModel(&tm);

        view->show();

 

        if (query.exec("select * from employee")) {

            int numRows = 0;

            if (db.driver()->hasFeature(QSqlDriver::QuerySize)) {

                numRows = query.size();

            } else {

                query.last();

                numRows = query.at() + 1;

                query.seek(0);

            }

 

            QString id, lname, fname, phone;

            QDateTime dob;

 

 

            display.append(QString(30, '='));

            display.append(QString::fromLocal8Bit("ID  |  姓名  |  生日  |  电话"));

            display.append(QString(60, '-'));

 

            while (query.next()) {

                id = query.value(0).toString();

                lname = query.value(1).toString();

                fname = query.value(2).toString();

                dob = query.value(3).toDateTime();

                phone = query.value(4).toString();

                QString result = id + "  " + lname + fname + "  " + dob.toString() + "  " + phone;

                display.append(result);

            }

            display.append(QString(30, '='));

            display.append(QString("Total: %1 rows").arg(numRows));

        } else {

            QSqlError error = query.lastError();

            display.append("From mysql database:" + error.databaseText());

        }

    } else {

        display.append("Cann't open database!");

        display.append("Reason: " + db.lastError().databaseText());

        QMessageBox::critical(0, qApp->tr("Cann't open database"),

                              qApp->tr("Unable to establish a database connection"),

                              QMessageBox::Cancel);

    }

 

    return a.exec();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值