#include "mainwindow.h"
#include <QApplication>
#include <QLabel>
#include <QPushButton>

#include <QtCore/QCoreApplication>
#include <QCoreApplication>
#include <QSpinBox>
#include <QSlider>
#include <QHBoxLayout>
#include  <QFile>
#include <QFileInfo>
#include <QDebug>
#include "newspaper.h"
#include "reader.h"
#include <QtSql>
#include <QSqlQuery>
#include <QMessageBox>
#include <QSqlError>
#include <QTextCodec>

bool connect(const QString &dbName)
{

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName(dbName);
    db.setPort(3306);
    db.setUserName("root");
    db.setPassword("root");
    if (!db.open())
    {
        QMessageBox::critical(0, QObject::tr("Database Error"), db.lastError().text());
        return false;
    }
    else
    {
        QMessageBox::information(0,QObject::tr("Tips"),QObject::tr("连接数据库成功。。!"));
        return true;
    }
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    /*测试链接数据库
    //测试支持的数据库
    //    QCoreApplication a(argc, argv);
    //        qDebug() << "Available drivers:";
    //        QStringList drivers = QSqlDatabase::drivers();
    //        foreach(QString driver, drivers)
    //        qDebug() << "\t "<< driver;
    //        qDebug() << "End";
    //    return a.exec();

    //测试打开数据库
    //    QCoreApplication a(argc, argv);
    //           QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    //           db.setHostName("localhost");
    //           db.setDatabaseName("qttest");//已建立的数据库名称
    //           db.setUserName("root");//用户名称
    //           db.setPassword("root");//密码
    //           bool ok = db.open();//如果成功ok位true,否则为false
    //           qDebug() << "\t"<<ok;

    qDebug() << "Available drivers:";
        QStringList drivers = QSqlDatabase::drivers();
        foreach(QString driver, drivers)           qDebug() << "\t "<< driver;
        qDebug() << "End";

    */

    //测试连接并打开操作数据库
    QTextCodec *codec = QTextCodec::codecForName("utf-8");
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForTr(codec);



    if (connect("eng"))
    {
        QSqlQuery query;

        /*
        query.prepare("INSERT INTO student  VALUES (?, ?, ?, ?)");
        QVariantList IDs;
        IDs << 1 << 2 << 3 << 4;
        query.addBindValue(IDs);

        QVariantList names;
        names << "Tom" << "Jack" << "Jane" << "Jerry";
        query.addBindValue(names);

        QVariantList dept_names;
        dept_names << "计算机" << "艺术" << "数学" << "外语";
        query.addBindValue(dept_names);

        QVariantList tot_creds;
        tot_creds << "10" << "11" << "12" << "13";
        query.addBindValue(tot_creds);

        if (!query.execBatch())
        {
            QMessageBox::critical(0, QObject::tr("Database Error"),
                                  query.lastError().text());
        }
        query.finish();
        */

        query.prepare("INSERT INTO tempTest (name, description) "
                      "VALUES (:name, :description)");

        query.bindValue(":name", "测试");
        query.bindValue(":description", "测试插入数据");
        query.exec();

        QString sql="SELECT name, description FROM tempTest";
        query.exec(sql);
        while (query.next())
        {
            QString name = query.value(0).toString();
            QString description = query.value(1).toString();
            qDebug() << name << ": " << description;
        }


    }
    else
    {
        return 1;
    }



    return a.exec();
}

QT4.8.5 连接数据库(读写数据)的更多相关文章

  1. ETL调度开发(5)——连接数据库运行数据库命令子程序

    ETL调度中读写数据信息,都须要连接数据库,以下的子程序通过传入的数据库连接字符串和数据库命令(或SQL)运行所须要的操作: #!/usr/bin/bash #created by lubinsu # ...

  2. HDFS读写数据块--${dfs.data.dir}选择策略

    最近工作需要,看了HDFS读写数据块这部分.不过可能跟网上大部分帖子不一样,本文主要写了${dfs.data.dir}的选择策略,也就是block在DataNode上的放置策略.我主要是从我们工作需要 ...

  3. powerdesigner连接数据库 导出数据

    powerdesigner连接数据库 导出数据 生成PDM文件 傻瓜试教程   也可下载文档:http://download.csdn.net/detail/shutingwang/6378665  ...

  4. win10 svchost.exe (LocalSystemNetworkRestricted)大量读写数据

    博主的笔记本联想Y50开机完毕后会不停滴读硬盘/写硬盘,导致开机后一段时间内无法正常使用电脑(硬盘读写高峰期).打开资源监视器发现是"svchost.exe (LocalSystemNetw ...

  5. inputstream和outputstream读写数据模板代码

    //读写数据模板代码 byte buffer[] = new byte[1024]; int len=0; while((len=in.read(buffer))>0){ out.write(b ...

  6. 百度地图LBS云平台读写数据操作类

    最近写了个叫<行踪记录仪>的手机软件,用了百度云来记录每个用户的最近位置,以便各用户能在地图上找到附近的人,为此写了个类来读写数据,大致如下: import java.util.Array ...

  7. 01. SQL Server 如何读写数据

    原文:01. SQL Server 如何读写数据 一. 数据读写流程简要SQL Server作为一个关系型数据库,自然也维持了事务的ACID特性,数据库的读写冲突由事务隔离级别控制.无论有没有显示开启 ...

  8. SQL Server 如何读写数据

    01. SQL Server 如何读写数据   一. 数据读写流程简要SQL Server作为一个关系型数据库,自然也维持了事务的ACID特性,数据库的读写冲突由事务隔离级别控制.无论有没有显示开启事 ...

  9. STM32F10X SPI操作flash MX25L64读写数据(转)

    源:STM32F10X SPI操作flash MX25L64读写数据 前一段时间在弄SPI,之前没接触过嵌入式外围应用,就是单片机也只接触过串口通信,且也是在学校的时候了.从离开手机硬件测试岗位后,自 ...

  10. .net环境下跨进程、高频率读写数据

    一.需求背景 1.最近项目要求高频次地读写数据,数据量也不是很大,多表总共加起来在百万条上下. 单表最大的也在25万左右,历史数据表因为不涉及所以不用考虑, 难点在于这个规模的热点数据,变化非常频繁. ...

随机推荐

  1. 【Win10】正常上网但ping不通外网

    使用360免费wifi连接了热点后,发现无法ping外网,仅能ping网关,浏览器正常访问 后来,换了wifi共享大师,也是不行.同样ping不到外网,浏览器正常访问 但是 wifi 共享大师有个功能 ...

  2. 【Ubuntu 16】安装eclipse

    1.将eclipse.tar.gz传送到/home/xxx/下,解压缩,这里我已经配置好了JDK1.7,所以eclipse配置了就可以使用 2.创建快捷方式 dream361@master:~$ to ...

  3. Android学习之旅(一)

    2017-02-27 今天开始,正式开启Android学习之旅,背景从事.Net平台开发快五年了,一直在用C#做Web开发. 前天选购了两本书:<Java 编程思想(第四版)>和<第 ...

  4. 微信原图泄露的只能是 Exif ,你的隐私不在这!!!

    版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有. 每周会统一更新到这里,如果喜欢,可关注公众号获取最新文章. 未经允许,不得转载. 序 最近很多公众号都推送了关 ...

  5. Struts:文件上传下载

  6. Entity Framework Core 2.0 中使用LIKE 操作符

    Entity Framework Core 2.0 中使用LIKE 操作符 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译 ...

  7. C# 实现AOP 的几种常见方式

    AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的中统一处理业务逻辑的一种技术,比较常见的场景是:日志记录,错误捕获 ...

  8. Oracle:解锁scott用户及设置密码

    关于Oracle 10g scott用户解锁的方法两则 解决方法一. 首先确认已经安装oracle 数据库和客户端 在客户端DOS下执行如下语句: 注意提示符号 c:\sqlplus /nolog s ...

  9. apache如何设置缓存

    基本介绍 httpd是一个比较经典的web服务器,也就是静态资源服务器,主要用来服务于一些静态的文件,例如css,js,html等文件,所谓的静态文件,也就是不需要通过服务器进行运行的文件. 在使用静 ...

  10. (一)Builder(建造者)模式

    我们一般在构建javabean的对象的时候通常有三种写法: 1.直接通过构造函数传参的方式设置属性,这种方法如果属性过多的话会让构造函数十分臃肿,而且不能灵活的选择只设置某些参数. 2.采用重叠构造区 ...