找回密码
 立即注册
收起左侧

QSQLITE给字段写入3个汉字与以上就会出错

4
回复
5336
查看
[复制链接]
累计签到:12 天
连续签到:1 天
来源: 2018-10-9 19:04:02 显示全部楼层 |阅读模式
1Qter豆
还有对计算机的机这个字就特容易导致出错,导致注入记录失败,我的系统是Win10、文本编码是utf-8,换成GBK编码也是这样,其他编码在qt creator中会变成乱码

回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2018-10-10 08:53:06 显示全部楼层
utf-8 是变长编码,可能是你在数据库中的字段长度不够哦 ~
回复

使用道具 举报

累计签到:12 天
连续签到:1 天
2018-10-10 17:25:42 显示全部楼层
本帖最后由 ycyu1455 于 2018-10-10 17:29 编辑
Since 发表于 2018-10-10 08:53
utf-8 是变长编码,可能是你在数据库中的字段长度不够哦 ~

QSQLITE的字段可以自动增长吧,所以我没设置大小,而且设置大小也是会出错

这是我插入数据的代码,第二条无法插入,”计算机机机机机机机机机”改成“计算”才成功插入
    query.exec("create table course ('名字1' varchar primary key, '名字2' nvarchar, '名字3' nvarchar, '名字4' nvarchar)");
    qDebug() << query.lastError();
    query.exec("insert into course values('数学', '数学', '王老师', '王老师')");
    qDebug() << query.lastError();
    query.exec("insert into course values(3    , '计算机机机机机机机机机', '白老师', '白老师')");
    qDebug() << query.lastError();

错误提示是
QSqlError("", "", "")
QSqlError("", "", "")
QSqlError("1", "Unable to execute statement", "near \"白老师\": syntax error")
回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2018-10-10 18:36:26 显示全部楼层
为什么 第一个会是 3 ,一个实数,不是 char 嘛?我搞错了 ?你加引号试试 ?
回复

使用道具 举报

累计签到:12 天
连续签到:1 天
2018-10-10 20:09:43 显示全部楼层
本帖最后由 ycyu1455 于 2018-10-10 20:46 编辑

query.exec("insert into course values('3'   , '计算机', '白老师', '白老师')");
这样还是一样,无法写入数据库,警告是
QSqlError("1", "Unable to execute statement", "near \"白老师\": syntax error")



我尝试把源文件的编码从utf-8换成带bom的utf-8,数据是写入数据库了,但全部都是乱码,这也算成功了吗,我再去百度一下,这个乱码问题

----------------------------------------------------------------------------------
好像是解决了,在头文件声明前 添加这行代码#pragma execution_character_set("utf-8"),就可以了,明天再查看这代码是什么意思,然后复制过来
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了