首页 > 代码库 > Qt操作数据库中出现的问题

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这位大神的文章,写的很好,可我的问题还没有解决。

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



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