Qt操作数据库中出现的问题

        最近在用Qt编写一个小的项目,前几今天都好好的,数据库一点问题都没有,今天不知道怎么了,老是出现乱码,怎么改都不行,想了半天自己也没有改什么不该改的地方啊,纠结了一天,哎!自己昨天的程序还都能运行,没有出现错误,今天的程序就是不行了!貌似程序和自己过不去似得,就在刚才终于解决了这个问题,no!不能说是解决了,只是没有乱码而已,现在还不知道是出了什么问题导致的。我的数据库中部分代码是这样的:

/*创建数据里并链接*/
static bool createConnection()
{
    QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
    QSqlDatabase db;            //创建一个数据库
    if(QSqlDatabase::contains("qt_sql_default_connection"))
    {
        db = QSqlDatabase::database("qt_sql_default_connection");
    }
    else
    {
        db = QSqlDatabase::addDatabase("QSQLITE");
    }
    //db.setHostName("localhost");
    db.setDatabaseName("SupSystem.db");  //设置数据库的名字
    //db.setUserName("root");
    //db.setPassword("123456");
    if(!db.open())
    {
        qCritical("Can't open database: %s(%s)",
                  db.lastError().text().toLocal8Bit().data(),
                  qt_error_string().toLocal8Bit().data());

        return false;
    }

    QSqlQuery query;
    /***************************员  工  表 *****************************/
    query.exec(QObject::tr("create table user(User_Id integer primary key AUTOINCREMENT,"
                           "User_Name vchar(100) ,User_Sex vchar(10),"
                           "User_Age vchar(100),User_Pwd vchar(20))"));
    query.exec(QObject::tr("insert into user values (1000,'admin 超级管理员','男','20','lq')"));
    query.exec(QObject::tr("insert into user values (1001,'小张 管理员','女','22','1001')"));
//此处省略其他的……
}
网上都说只要加了 QObject::tr 就行了,但是我的还是不行,不知道为什么,很是纠结。我在主函数里面也加了转码语句了:

    QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));//支持中文文件名显示
结果是,依然乱码。

百度看了http://blog.csdn.net/brave_heart_lxl/article/details/7186631这位大神的文章,写的很好,可我的问题还没有解决。

如果你也遇到了相似的问题,可以一起交流。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值