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