加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

在Qt代码中实现Mysql数据库的创建、数据库删除

(2018-06-29 17:01:01)
标签:

mysql

qt

代码创建数据库

分类: 计算机
一、首先研究一下通过sql语句创建和删除数据库:

创建数据库:
create database if not exists 数据库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
这个语句设置数据库缺省字符集为utf8,排序规则为utf8_general_ci。如果数据库已经存在,则不创建。

删除数据库:
drop database if exists 数据库名
这个语句在数据库存在时删除之,可防止数据库不存在时报错。

二、现在研究如何在qt中用代码实现上述功能:
要想对数据库进行操作,首先需要指定一个数据库名,然后打开数据库,然后才能进行数据库相关操作。所以首先打开一个系统中已经存在的数据库,我们选择sys。

程序代码如下:

dataType.h 内容:

//数据库连接参数
typedef struct _structDbConnPara
{
    QString     sIP;
    int         iPort;
    QString     sDbName;
    QString     sUserName;
    QString     sPassWord;
    _structDbConnPara()
    {
        reset();
    }
    reset()
    {
        sIP = "localhost";
        iPort = 3306;
        sDbName = "dbTest";
        sUserName = "root";
        sPassWord = "Hello";
    }
}structDbConnPara;


sqlDatabase.h 内容:

#define SQLDATABASE_H

#include "dataType.h"
#include 
#include 
#include  >

class SqlDatabase
{
public:
    SqlDatabase();
    ~SqlDatabase();

    void setDbPara( const structDbConnPara &dbConnParaToSet );
bool openDb();
    bool closeDb();
    bool createDb( const QString& dbName );


private:
    QSqlDatabase sqlDb;
    QSqlQuery  sqlQuery;
    structDbConnPara dbConnPara;

bool m_bDbIsOpen;

};

#endif // SQLDATABASE_H


sqlDatabase.cpp 文件内容:


#include "SqlDatabase.h"
#include 
#include 
#include 

SqlDatabase::SqlDatabase()
{
    m_bDbIsOpen = false;
    sqlDb = QSqlDatabase::addDatabase("QMYSQL");
    sqlQuery = QSqlQuery(sqlDb);
}

SqlDatabase::~SqlDatabase()
{
}

void SqlDatabase::setDbPara( const structDbConnPara &dbConnParaToSet )
{
    sqlDb.setHostName(dbConnParaToSet.sIP);
    sqlDb.setPort(dbConnParaToSet.iPort);
    sqlDb.setDatabaseName(dbConnParaToSet.sDbName);
    sqlDb.setUserName(dbConnParaToSet.sUserName);
    sqlDb.setPassword(dbConnParaToSet.sPassWord);

    dbConnPara = dbConnParaToSet;
}

bool SqlDatabase::openDb()
{
    if( m_bDbIsOpen )
        return true;

    if( !sqlDb.open() ) {
        m_bDbIsOpen = false;
//outPutDbExecError( "Cannot open database, Unable to establish a database connection:" );
        return false;
    }
    m_bDbIsOpen = true;

    return true;
}

bool SqlDatabase::closeDb()
{
    sqlDb.close();
    m_bDbIsOpen = false;
}

bool SqlDatabase::createDb(const QString &dbName)
{
    if( !m_bDbIsOpen )
        return false;

    bool success = false;
    QString sQuery;
    QSqlQuery *pSqlQur = new QSqlQuery( sqlDb );

    //构建语句
    sQuery = QObject::tr("create database if not exists %1 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci").arg( dbName );

    //执行
    success= pSqlQur->exec( sQuery );
    if( !success ){
        QString sErr = QObject::tr("failed to create database '%1', the sql statement is: %2:.").arg( dbName ).arg( sQuery );
//outPutDbExecError( sErr );
        return false;
    }
    else
        qDebug() << QObject::tr("Database '%1' has been created successfully.").arg( dbName );

    delete pSqlQur;
    return true;
}

main.cpp 内容:

#include "sqlDatabase.h"
#include "dataType.h"

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

    //创建数据库
    structDbConnPara* pDbPara = new structDbConnPara;


pDbPara->sIP = QObject::tr("localhost");
pDbPara->iPort = 3306;
pDbPara->sDbName = QObject::tr("sys");            //这里先用sys数据库打开
pDbPara->sUserName = QObject::tr("root");
pDbPara->sPassWord = QObject::tr("Hello");

SqlDatabase* db = new SqlDatabase();
db->setDbPara( *pDbPara );
db->openDb();
db->createDb( "mydb" );
db->closeDb();
delete db;

    delete pDbPara;

int r = a.exec();

    return r;
}


程序执行完一次后,应该能看到mydb这个数据库已经存在了。

数据库删除方法类似,只需要替换相应的sql语句即可。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有