问题也描述不清楚,请看几行代码结其运行结果,代码很简单,红色部分是有区别的地方,请高人解答一下,谢谢。主要问题是想解决QT连接MYSQL后能使用中文
 解决方法见7楼
测试1:
   QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("SchoolDB");
    db.setUserName("root");
    db.setPassword("123456");
    qDebug()<<"db open=" <<db.open();
    db.exec("SET NAMES 'utf8'");
    QSqlQuery query(db);
    qDebug()<<"drop="    <<query.exec("DROP TABLE student");   //删除现存的student表
    qDebug()<<"create="  <<query.exec("CREATE TABLE student(name varchar(20),id int)");  //建立表student
    qDebug()<<"insert="  <<query.exec("INSERT INTO student(name,id) VALUES('张三',34)");  //插入数据
    qDebug()<<"select="  <<query.exec("SELECT * FROM student");    //以下几行是显示表中所有数据
    while(query.next()){
        QString name = query.value(0).toString();
        int id=query.value(1).toInt();
       qDebug()<<"name="<<name<<",id="<<id;
    }
   db.close();
结果:
   db open= true
   drop= true 
   create= true 
   insert= false     //有最前面三行代码及插入语句中有中文就插入失败,可以比较测试1与测试2,也可对比测试1与测试3
   select= true 
测试2:
 
   QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));    
   QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("SchoolDB");
    db.setUserName("root");
    db.setPassword("123456");
    qDebug()<<"db open=" <<db.open();
    db.exec("SET NAMES 'utf8'");
    QSqlQuery query(db);
    qDebug()<<"drop="    <<query.exec("DROP TABLE student");
    qDebug()<<"create="  <<query.exec("CREATE TABLE student(name varchar(20),id int)");
    qDebug()<<"insert="  <<query.exec("INSERT INTO student(name,id) VALUES('zhangshan',34)");
    qDebug()<<"select="  <<query.exec("SELECT * FROM student");
    while(query.next()){
        QString name = query.value(0).toString();
        int id=query.value(1).toInt();
       qDebug()<<"name="<<name<<",id="<<id;
    }
   db.close();
结果:   //对比测试1与测试2
  db open= true
   drop= true    
   create= true 
   insert= true    
   select= true 
   name= "zhangshan" ,id= 34 
测试3:
 
   //QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
   // QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
    //QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));  
   QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("SchoolDB");
    db.setUserName("root");
    db.setPassword("123456");
    qDebug()<<"db open=" <<db.open();
    db.exec("SET NAMES 'utf8'");
    QSqlQuery query(db);
    qDebug()<<"drop="    <<query.exec("DROP TABLE student");
    qDebug()<<"create="  <<query.exec("CREATE TABLE student(name varchar(20),id int)");
    qDebug()<<"insert="  <<query.exec("INSERT INTO student(name,id) VALUES('张三',34)");
    qDebug()<<"select="  <<query.exec("SELECT * FROM student");
    while(query.next()){
        QString name = query.value(0).toString();
        int id=query.value(1).toInt();
       qDebug()<<"name="<<name<<",id="<<id;
    }
   db.close();
 结果:                       //对比测试1与测试3
  db open= true  
  drop= true   
 create= true   
  insert= true   
  select= true   name= "??èy" ,id= 34   //中文乱码