QT4.8.5 连接数据库(读写数据)

#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();
}
时间: 2024-10-06 20:23:34

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

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

ETL调度中读写数据信息,都需要连接数据库,下面的子程序通过传入的数据库连接字符串和数据库命令(或SQL)执行所需要的操作: #!/usr/bin/bash #created by lubinsu #2014 source ~/.bash_profile values=`sqlplus -S $1 << EOF set heading off feedback off pagesize 0 verify off echo off WHENEVER SQLERROR exit SQL.SQLCO

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

ETL调度中读写数据信息,都须要连接数据库,以下的子程序通过传入的数据库连接字符串和数据库命令(或SQL)运行所须要的操作: #!/usr/bin/bash #created by lubinsu #2014 source ~/.bash_profile values=`sqlplus -S $1 << EOF set heading off feedback off pagesize 0 verify off echo off WHENEVER SQLERROR exit SQL.SQLCO

01. SQL Server 如何读写数据

原文:01. SQL Server 如何读写数据 一. 数据读写流程简要SQL Server作为一个关系型数据库,自然也维持了事务的ACID特性,数据库的读写冲突由事务隔离级别控制.无论有没有显示开启事务,事务都是存在的.流程图如下: 数据读写流程图 0. 事务开始(1) 所有DML语句必然是基于事务的,如果没有显式开启事务,即手动写下BEGIN TRAN,SQL Server则把每条语句作为一个事务,并自动提交事务. 也就是说SQL SERVER 默认不开启隐式事务,这点与ORACLE正好相反

inputstream和outputstream读写数据模板代码

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

读写数据块函数--fread( )和fwrite( )函数

读写数据块函数--fread( )和fwrite( )函数    调用方式分别为:    (1) .fread(buffer,size,count,fp): 该函数将fp指向的文件的数据以数据块的形式读入内存buffer    (2).write(buffer,size,count,fp):该函数将内存buffer的内容以数据块的形式写入fp指向的文件.    其中:buffer:是一个指针.对于fread来说 它是读入数据的有效地址.对 fwrite来说,是要写盘的数据地址(起始地址). si

【转】iphone 输入/输出流异步读写数据

原文:iphone 输入/输出流异步读写数据 分类: iphone2012-05-30 14:50 2484人阅读 评论(1) 收藏 举报 iphoneattributesinterfacepathstreamfile 1.首先是往文件里写入数据 WriteFile.h [cpp] view plaincopy #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @class NoteDb; @interface Wr

如何选择容器,主要从存放要求和读写数据效率两方面考虑

1 ,存放要求 无序:set,不能重复. 有序:List,允许重复 “key-value”对:Map 2 ,读写效率 Hash:两者都最高 Array:读快改慢 Linked:读慢改快 Tree:加入元素可排序使用 如何选择容器,主要从存放要求和读写数据效率两方面考虑,布布扣,bubuko.com

ADO.NET学习笔记-读写数据

1. DbCommand对象 要读写数据,一是需要有效的数据链接,二是需要DbCommand对象向数据源传递SQL命令.DbCommand对象包含的命令可以是DML数据操作语言,也可以是DDL数据定义语言.创建DbCommand的最好方式是先创建DbConnection,然后使用DbConnection的CreateCommand()方法,这样创建的DbCommand与DbConnection之间最为匹配.DbCommand必备的两个重要属性为CommandText和CommandType,示例

Android中向SD卡读写数据,读SD卡和手机内存

package com.example.sdoperation; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import android.support.v7.app.Actio

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

最近工作需要,看了HDFS读写数据块这部分.不过可能跟网上大部分帖子不一样,本文主要写了${dfs.data.dir}的选择策略,也就是block在DataNode上的放置策略.我主要是从我们工作需要的角度来读这部分代码的. 1 hdfs-site.xml 2 <property> 3 <name>dfs.data.dir</name> 4 <value>/mnt/datadir1/data,/mnt/datadir2/data,/mnt/datadir3/