windows下Qt访问mysql中文名数据库

在windows中,通过Qt访问MySql数据库时,一旦有中文,都会出现这样那样的问题。而这些问题一般都是由于编码格式造成的,所以要通过各种方式同步好qt和mysql的编码格式。
直接用mysql的SDK的话,可以参考这个https://blog.youkuaiyun.com/qq_34867559/article/details/78567483

但是用的是 QSqlDatabase的话,就要按照下面这样子来操作了:

首先qt这边的头文件(或者cpp文件)记得加上这一句

#pragma execution_character_set("utf-8")

然后就可以在代码中设置连接时的编码格式了。

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL3");

    db.setHostName("localhost");
    db.setPort(3306);
    db.setDatabaseName("sys");       //这里先连接一个系统的英文名数据库,以建立起和mysql的连接,这个数据库作为我们的垫脚石
    db.setUserName("root");
    db.setPassword("123456");   //这里输入你的密码
    if (!db.open())
    {
        qDebug() << "create database fail:" << db.lastError();
    }
    else
    {
//        db.setConnectOptions("character_set_connection=utf8"); // use an SSL connection to the server,不知道为啥,这个好像没用。不过也可以试试,也许你们可以
//        qDebug() << "set options:" << db.connectOptions() << db.lastError();

     db.exec("set names 'utf8'"); //前面要连接好数据库才能进行这个操作,设置编码格式

     QSqlQuery query =  db.exec("use 我的中文名数据库"); //这个时候就可以连接(切换)中文的数据库了
//        QSqlQuery query =  db.exec("CREATE SCHEMA `我的中文名数据库`");

     qDebug() << db.lastError();
    }

另外,在MySql中,在执行sql语句时,凡是一些特殊字符(数字开头等)的表格名、列名称等,假如直接写,可能会报语法错误。这个时候可以用··将其包起来。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值