您的位置:首页 > 编程语言 > Qt开发

Qt--SQl学习

2015-10-16 14:43 525 查看
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






                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: