QT中MySql数据库应用从无到有创建过程

QT中MySql数据库应用从无到有创建过程

1、在Qt中,首先要创建数据库连接、数据库、数据表,搭建一个可用的MySQL数据库平台,其他的插入数据、删除数据、查询等操作使用sql语句执行;

2、创建数据库连接。数据库连接名在创建时候就指定了,把数据库连接中基本配置信息(主机名、端口、用户名、密码)设置好,如果能打开说明数据库连接创建没有问题。

QString querystring;
//**********创建数据库连接
sql = QSqlDatabase::addDatabase("QMYSQL", "testConnect");
sql.setHostName("127.0.0.1");
sql.setPort(3306);
sql.setUserName("root");
sql.setPassword("123456");
if(!sql.open())
{
    qDebug()<<"open failed";
    return;
}
else
{
    qDebug()<<"open succeeded";
}

3、创建数据库。Sql先指定连接名,执行创建数据库的sql语句,判断能够正确执行。因为上方sql是刚刚创建了数据库连接,所以开头也可不用指定数据库连接名,但为保持相互独立,第一句代码写上。

//**********创建数据库
sql = QSqlDatabase::database("testConnect");
querystring = "CREATE DATABASE IF NOT EXISTS operatesql";
sql.exec(querystring);  
if (sql.lastError().isValid())  
{  
    qDebug() << sql.lastError();  
    qDebug() << "Create database failed.";  
    return;
}  
else  
{  
    qDebug() << "Create database successfully.";  
}  

4、创建数据表。Sql先指定数据库连接、数据库名,打开;执行创建数据表的sql语句,如果能够正确执行,说明数据表创建成功。

//**********创建数据表
sql = QSqlDatabase::database("testConnect");
sql.setDatabaseName("operatesql");
if(!sql.open())
{
    qDebug()<<"open failed";
    return;
}
else
{
    qDebug()<<"open succeeded";
}

querystring = 
        "CREATE TABLE IF NOT EXISTS operatesql.persons\
        (\
        number int,\
        name varchar(255),\
        sex varchar(255),\
        score float\
        )";
sql.exec(querystring); 
if (sql.lastError().isValid())  
{  
    qDebug() << sql.lastError();  
    qDebug() << "Create database failed.";  
    return;
}  
else  
{  
    qDebug() << "Create database successfully.";  
}  
QMessageBox::information(NULL, "Warning", "Create Successful");

5、说明
如果数据库或数据表已经存在,使用sql语句再创建的时候会提示“已存在,创建失败”的错误,只能重新创建数据库或数据表,或者先判断是否存在再创建。
数据库连接如果原来就存在再创建则会覆盖。
以下部分代码是修改过的,考虑了原来的数据库、数据表存在的情况。

6、完整代码如下:

//**********MySQL数据库从无到有创建过程
//**********打印sql数据库驱动
QStringList drivers = QSqlDatabase::drivers();  
qDebug() << drivers;  

QString querystring;
//**********创建数据库连接
sql = QSqlDatabase::addDatabase("QMYSQL", "testConnect");
sql.setHostName("127.0.0.1");
sql.setPort(3306);
sql.setUserName("root");
sql.setPassword("123456");
if(!sql.open())
{
    qDebug()<<"open failed";
    return;
}
else
{
    qDebug()<<"open succeeded";
}

//**********创建数据库
sql = QSqlDatabase::database("testConnect");
querystring = "CREATE DATABASE IF NOT EXISTS operatesql";
sql.exec(querystring);  
if (sql.lastError().isValid())  
{  
    qDebug() << sql.lastError();  
    qDebug() << "Create database failed.";  
    return;
}  
else  
{  
    qDebug() << "Create database successfully.";  
}  

//**********创建数据表
sql = QSqlDatabase::database("testConnect");
sql.setDatabaseName("operatesql");
if(!sql.open())
{
    qDebug()<<"open failed";
    return;
}
else
{
    qDebug()<<"open succeeded";
}

querystring = 
    "CREATE TABLE IF NOT EXISTS operatesql.persons\
    (\
    number int,\
    name varchar(255),\
    sex varchar(255),\
    score float\
    )";
sql.exec(querystring); 
if (sql.lastError().isValid())  
{  
    qDebug() << sql.lastError();  
    qDebug() << "Create database failed.";  
    return;
}  
else  
{  
    qDebug() << "Create database successfully.";  
}  
QMessageBox::information(NULL, "Warning", "Create Successful");
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值