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();
}
#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();
}
相关文章推荐
- otl 操作 sqlite3 简单例子
- qt4:一个简单而完整的例子
- 使用jxl读写excel(jxl操作excel)的简单例子
- 随便写个用SerialPort操作串口的简单例子
- iBatis 操作数据库【简单的一对多映射】,简单例子之二
- iBatis 操作数据库,简单例子之一
- 实现VSTO操作WORD之二 --------实现简单控件编程例子
- android按钮的操作例子,简单大家看明白_基础篇
- 简单实用的操作RMS小例子
- 简单实用的操作RMS的小例子
- Qt信号槽机制的简单例子
- 使用jxl读写excel(jxl操作excel)的简单例子
- Sqlite简单介绍与一些常用的例子
- js操作cookie的简单例子
- C# 操作MySQL数据库的简单例子
- 使用jxl读写excel(jxl操作excel)的简单例子
- JSTL+XPATH操作XML简单例子
- 剪贴板简单操作例子
- C#操作MySQL数据库的简单例子
- SQLite简单操作