头文件:
#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,'吴',152********,'西大街')"));
query.exec(QObject::tr("insert into telephone values (1,'秦',151********,'东大街')"));
query.exec(QObject::tr("insert into telephone values (2,'笑',137********,'北大街')"));
动态插入
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);