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

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

时间: 2024-12-16 14:47:16

Qt操作数据库中出现的问题的相关文章

QT 操作数据库

整理一下 QT 操作数据库的一些要点,以备以后的查询学习(主要是操作 mysql ). 首先,要查询相关的驱动是否已经装好了,可以用以下的程序进行验证: #include <QtCore/QCoreApplication> #include <QSqlDatabase> #include <QDebug> #include <QStringList> int main(int argc, char *argv[]) { QCoreApplication a(

quartz2.3.0(十五)执行、暂停、继续执行、清除,花式操作数据库中持久化的job任务

前提准备: 先在数据库中建立quartz需要的11张表(我这里用的是Oracle数据库),根据不同的数据库quartz分别提供了不同的初始化sql文件,sql文件路径在 quartz-2.3.0-SNAPSHOT-0724\src\org\quartz\impl\jdbcjobstore下: ScheduleBuilder是trigger触发器的触发规则定制类,旗下有4种触发器实现类:  CalendarIntervalScheduleBuilder.CronScheduleBuilder.Da

封装JDBC操作数据库的方法

自己动手封装java操作数据库的方法: 一:目录结构 二:所需依赖的第三方jar包 这里只需引入mysql-connector-java-5.1.8-bin.jar,mysql数据库驱动jar包 三:代码 1:和数据库进行交互,首先是数据源,获取连接,代码如下: 1 /** 2 * 3 */ 4 package com.hlcui.datasource; 5 6 import java.sql.Connection; 7 import java.sql.DriverManager; 8 impo

用Java操作数据库Datetime数据

Date.Calendar.Timestamp的区别.相互转换与使用 1 Java.util.Date 包含年.月.日.时.分.秒信息. 1 // String转换为Date 2 String dateStr="2013-8-13 23:23:23"; 3 String pattern="yyyy-MM-dd HH:mm:ss"; 4 DateFormate dateFormat=new SimpleDateFormat(pattern); 5 Date date=

数据库中Schema和Database有什么区别

在MySQL中创建一个Schema好像就跟创建一个Database是一样的效果,在SQL Server和Orcal数据库中好像又不一样. 目前我只能理解,在mysql中 schema<==>database. 数据库中User和Schema的关系 假如我们想了解数据库中的User和Schema究竟是什么关系,首先必须了解一下数据库中User和Schema到底是什么概念. 在SQL Server2000中,由于架构的原因,User和Schema总有一层隐含的关系,让我们很少意识到其实User和S

[转] 数据库中Schema和Database有什么区别

原文链接:http://blog.163.com/baibai_zheng/blog/static/51980755201022125325689/ 前言:最近接触 Laravel 的数据库迁移, 代码里的 Schema 让我对 Database 以及 两者的区别有点蒙圈了,然后就有了这篇转载. 在MySQL中创建一个Schema好像就跟创建一个Database是一样的效果,在SQL Server和Orcal数据库中好像又不一样. 目前我只能理解,在mysql中 schema<==>datab

数据库中Schema(模式)概念的理解

在学习SQL的过程中,会遇到一个让你迷糊的Schema的概念.实际上,schema就是数据库对象的集合,这个集合包含了各种对象如:表.视图.存储过程.索引等.为了区分不同的集合,就需要给不同的集合起不同的名字,默认情况下一个用户对应一个集合,用户的schema名等于用户名,并作为该用户缺省schema.所以schema集合看上去像用户名. 如果把database看作是一个仓库,仓库很多房间(schema),一个schema代表一个房间,table可以看作是每个房间中的储物柜,user是每个sch

JDBC操作数据库的学习(1)

单单对数据库的操作,比如说MySQL,我们可以在命令行窗口中执行,但是一般是应用程序要操作数据库,因此我们应该在程序中的代码上体现对数据库的操作,那么使用程序应用如何操作数据库呢?那就要使用到数据库的连接驱动,应用程序通过这些驱动来操作数据库: 但是这里就又有一个问题了,不同的数据库有各自的驱动程序,而一个应用程序要操作不同的数据库,那么就要懂得要使用的数据库的驱动如何操作,这样就增加了学习成本.好在我们使用Java开发应用,而Java中只需要使用JDBC就能操作所有的数据库,因为JDBC提供的

数据库中User和Schema的关系

如果我们想了解数据库中的User和Schema到底什么关系,那么让我们首先来了解一下数据库中User和Schema到底是什么概念. 在SQL Server2000中,由于架构的原因,User和Schema总有一层隐含的关系,让我们很少意识到其实User和Schema是两种完全不同的概念,不过在SQL Server2005中这种架构被打破了,User和Schema也被分开了. 首先我来做一个比喻,什么是Database,什么是Schema,什么是Table,什么是Column,什么是Row,什么是