您的位置:首页 > 编程语言 > Qt开发

Qt操作SQLITE简单例子

2017-02-25 00:31 253 查看
connection.h:

#ifndef CONNECTION_H

#define CONNECTION_H

#include <QMessageBox>

#include <QSqlDatabase>

#include <QSqlQuery>

static bool createConnection()

{

// ŽŽœšÒ»žöÊýŸÝ¿âÁ¬œÓ£¬Ê¹Óá°connection1¡±ÎªÁ¬œÓÃû

QSqlDatabase db1 = QSqlDatabase::addDatabase("QSQLITE", "connection1");

db1.setDatabaseName("my1.db");

if (!db1.open()) {

QMessageBox::critical(0, "Cannot open database1",

"Unable to establish a database connection.", QMessageBox::Cancel);

return false;

}

// ÕâÀïÒªÖž¶šÁ¬œÓ

QSqlQuery query1(db1);

query1.exec("create table student (id int primary key, "

"name varchar(20))");

query1.exec("insert into student values(0, 'LiMing')");

query1.exec("insert into student values(1, 'LiuTao')");

query1.exec("insert into student values(2, 'WangHong')");

// ŽŽœšÁíÒ»žöÊýŸÝ¿âÁ¬œÓ£¬ÒªÊ¹Óò»Í¬µÄÁ¬œÓÃû£¬ÕâÀïÊÇ¡°connection2¡±

QSqlDatabase db2 = QSqlDatabase::addDatabase("QSQLITE", "connection2");

db2.setDatabaseName("my2.db");

if (!db2.open()) {

QMessageBox::critical(0, "Cannot open database1",

"Unable to establish a database connection.", QMessageBox::Cancel);

return false;

}

// ÕâÀïÒªÖž¶šÁ¬œÓ

QSqlQuery query2(db2);

query2.exec("create table student (id int primary key, "

"name varchar(20))");

query2.exec("insert into student values(10, 'LiQiang')");

query2.exec("insert into student values(11, 'MaLiang')");

query2.exec("insert into student values(12, 'ZhangBin')");

return true;

}
#endif // CONNECTION_H

main.cpp:
#include <QApplication>

#include <QSqlDatabase>

#include <QDebug>

#include <QStringList>

#include "connection.h"

#include <QVariant>

#include <QSqlDriver>

#include <QSqlRecord>

#include <QSqlField>

#include <QSqlError>

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

// ŽŽœšÊýŸÝ¿âÁ¬œÓ

if (!createConnection()) return 1;

// ʹÓÃQSqlQuery²éѯÁ¬œÓ1µÄÕûÕÅ±í£¬ÏÈҪʹÓÃÁ¬œÓÃû»ñÈ¡žÃÁ¬œÓ

QSqlDatabase db1 = QSqlDatabase::database("connection1");

QSqlQuery query1(db1);

qDebug() << "connection1:";

query1.exec("select * from student");

while(query1.next())

{

qDebug() << query1.value(0).toInt() << query1.value(1).toString();

}

// ʹÓÃQSqlQuery²éѯÁ¬œÓ2µÄÕûÕűí

QSqlDatabase db2 = QSqlDatabase::database("connection2");

QSqlQuery query2(db2);

qDebug() << "connection2:";

query2.exec("select * from student");

while(query2.next())

{

qDebug() << query2.value(0).toInt() << query2.value(1).toString();

}

// ÒÔÏÂÊÇÔÚÀý³Ì17-4ÖÐÌíŒÓµÄŽúÂë

int numRows;

// ÏÈÅжϞÃÊýŸÝ¿âÇý¶¯ÊÇ·ñÖ§³ÖQuerySizeÌØÐÔ£¬Èç¹ûÖ§³Ö£¬Ôò¿ÉÒÔʹÓÃsize()º¯Êý£¬

// Èç¹û²»Ö§³Ö£¬ÄÇÃŽŸÍʹÓÃÆäËû·œ·šÀŽ»ñÈ¡×ÜÐÐÊý

if (db2.driver()->hasFeature(QSqlDriver::QuerySize)) {

qDebug() << "has feature: query size";

numRows = query2.size();

} else {

qDebug() << "no feature: query size";

query2.last();

numRows = query2.at() + 1;

}

qDebug() << "row number: " << numRows;

// ÖžÏòË÷ÒýΪ1µÄŒÇÂŒ£¬ŒŽµÚ¶þÌõŒÇÂŒ

query2.seek(1);

// ·µ»Øµ±Ç°Ë÷ÒýÖµ

qDebug() << "current index: " << query2.at();

// »ñÈ¡µ±Ç°ÐеČÇÂŒ

QSqlRecord record = query2.record();

// »ñÈ¡ŒÇÂŒÖС°id¡±ºÍ¡°name¡±ÁœžöÊôÐÔµÄÖµ

int id = record.value("id").toInt();

QString name = record.value("name").toString();

qDebug() << "id: " << id << "name: " << name;

// »ñÈ¡Ë÷ÒýΪ1µÄÊôÐÔ£¬ŒŽµÚ¶þžöÊôÐÔ

QSqlField field = record.field(1);

// Êä³öÊôÐÔÃûºÍÊôÐÔÖµ£¬œá¹ûΪ¡°name¡±ºÍ¡°MaLiang¡±

qDebug() << "second field: " << field.name()

<< "field value: " << field.value().toString();

query2.prepare("insert into student(id,name) values(?,?)");

int idValue=100;

QString nameValue="daoming";

query2.addBindValue(idValue);

query2.addBindValue(nameValue);

query2.exec();

qDebug()<< "insert data,now table student :"<<endl;

query2.exec("select * from student");

while(query2.next())

{

qDebug()<<query2.value(0).toInt() << query2.value(1).toString();

}

//batch

query2.prepare("insert into student(id,name) values(?,?)");

QVariantList ids;

ids<<20<<21<<22;

query2.addBindValue(ids);

QVariantList names;

names<<"xiaoming"<<"xiaohua"<<"xiaogang";

query2.addBindValue(names);

if(! query2.execBatch()) qDebug()<<query2.lastError();

qDebug()<< "batch insert data,now table student :"<<endl;

query2.exec("select * from student");

while(query2.next())

{

qDebug()<<query2.value(0).toInt() << query2.value(1).toString();

}

return a.exec();

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: