Qt--SQl学习

Qt 5.4

mysql-essential-5.1.51-win32.msi

win7 32


今天学习数据库操作 遇到一些问题 贴出来以后备用:

QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.

网上查找到解决办法:http://www.cppblog.com/seahouse/archive/2010/12/31/137131.html

测试代码如下:


<pre name="code" class="cpp">#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->showButton,SIGNAL(clicked()),this,SLOT(showDataBaseSlots()));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::showDataBaseSlots()
{
    this->db = QSqlDatabase::addDatabase("QMYSQL");
    this->db.setHostName("localhost");
    this->db.setUserName("root");
    this->db.setPassword("123456");
    this->db.setDatabaseName("seaso");

    bool ok=db.open();

    if(ok)
    {
        qDebug()<<"Open db Sucess!";
    }
    else
    {
       qDebug()<<"Error open database because:";
    }
    QSqlQuery query;
    query.exec("select *from information");
    while(query.next())
    {
        int id = query.value(0).toInt();
        QString name = query.value(1).toString();
        QString address = query.value(2).toString();
        QString contact = query.value(3).toString();
        qDebug()<<id<<"\t"<<name<<"\t"<<address<<"\t"<<contact;
    }
    this->db.close();
  //  QSqlDatabase::removeDatabase("QMYSQL");
}

void MainWindow::on_addButton_clicked()
{
    if(this->db.isOpen())
    {
        qDebug()<<"database is still open now!";
    }
    else
    {
        if(QSqlDatabase::contains("SQL_seaso"))
        {
            this->db = QSqlDatabase::database("SQL_seaso");
        }
        else
        {
            this->db = QSqlDatabase::addDatabase("QMYSQL","SQL_seaso");
        }
        this->db.setHostName("localhost");
        this->db.setUserName("root");
        this->db.setPassword("123456");
        this->db.setDatabaseName("seaso");
        bool ok=db.open();

        if(ok)
        {
            qDebug()<<"Open db Sucess!";
        }
        else
        {
           qDebug()<<"Error open database because:";
        }
    }
    QSqlQuery query(db);
    query.prepare("INSERT INTO information(id,name,address,contact)" "VALUES (:id,:name ,:address ,:contact)");
    query.bindValue(":id",ui->idLineEdit->text());
    query.bindValue(":name",ui->nameLineEdit->text());
    query.bindValue(":address",ui->addressLineEdit->text());
    query.bindValue(":contact",ui->contactLineEdit->text());
    bool o=query.exec();
    if(o)
    {
        qDebug()<<"inert value sucess!";
        ui->idLineEdit->clear();
        ui->nameLineEdit->clear();
        ui->addressLineEdit->clear();
        ui->contactLineEdit->clear();
    }
    else
    {
        qDebug()<<"error messages:";
    }
    this->db.close();
   // QSqlDatabase::removeDatabase("QMYSQL");
}


 
<pre name="code" class="cpp">#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QSql>
#include <QSqlDatabase>
#include <QDebug>
#include <QSqlQuery>
#include <QVariant>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void showDataBaseSlots();

    void on_addButton_clicked();

private:
    Ui::MainWindow *ui;
    QSqlDatabase db;

};

#endif // MAINWINDOW_H

 
<pre name="code" class="cpp">#
# Project created by QtCreator 2015-10-16T10:37:33
#
#-------------------------------------------------

QT       += core gui sql

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = QSql
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值