Qt连接Mysql的问题

头文件:

#include <QSqlDatabase>

#include <QSqlQuery>

#include <QtSql>

工程中需要加入

QT  +=sql

数据库中的中文显示为乱码的解决方法:

在main函数中加入

#include <QTextCodec>

QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

 

数据库常用语句:

1.创建一个数据库

bool XXX::ConnectionToDB()

{

   
   QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");

   db.setDatabaseName("database.db");

   

   if(!db.open()) {
        return false;

   }
    else{
       return true;

   }
}    

  

 

2.当数据库打开后,就可以向里面添加表了

QSqlQuery query;

query.exec(QObject::tr("create table telephone ("

           "contactID int primary key,"

           "name vchar,telephones interger, address vchar)"));

  

3.当有了表以后,就可以向里面添加数据了

静态插入

 query.exec(QObject::tr("insert into telephone values (0,'吴',15229262462,'西大街')"));

 query.exec(QObject::tr("insert into telephone values (1,'秦',15109280171,'东大街')"));

 query.exec(QObject::tr("insert into telephone values (2,'笑',13775623567,'北大街')"));

 

动态插入

addPerson(const int contactId,const QString name,const QString telephone ,const QString addr)

{

QSqlQuery query;

QString temp1 = QObject::tr("insert into telephone(contactID,name,telephones,address) values('%1','%2','%3','%4')").arg(contactId)

                        .arg(name)

                        .arg(telephone )

                        .arg(addr);

 bool isok;

 isok = query.exec(temp2);

}

  

 

4.查找

 QSqlQuery query;

 bool flag=true;

 query.exec(QObject::tr("select * from telephone where name='%1'").arg("吴"));

 while(query.next())

  {

       flag=false;

int telId_db=query.value(0).toInt();

QString name_db=query.value(1).toString();

QString telNum_db=query.value(2).toString();

QString addr_db=query.value(3).toString();

}

  

如果查找失败,就不会进入到while循环里面去,既flag依然为true;

 

5.删除

 

QSqlQuery query;

 query.exec(QString("delete from telephone where contactID = '%1'").arg(1);

 

6.删除表里的全部数据

QSqlQuery query;

query.exec("delete from telephone ");

 

7.更新表里的内容

QSqlQuery query;

QString temp2 = QObject::tr("update telephone set telephones='%1', address='%2' where contactID='%3'").arg("1234556").arg("南大街").arg(1);

 bool isok;

 isok = query.exec(temp2);

 

posted @ 2017-09-23 09:28  Jacky_Peng  阅读(178)  评论(0)    收藏  举报