#include <QApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
#include <QSqlDriver>
#include <QSqlError>
#include <QStringList>
#include <QMessageBox>
#include <QVariant>
#include <QDir>
#include <QSqlRecord>
#include <QSqlField>
static bool createConnection()
{
QSqlDatabase db1 = QSqlDatabase::addDatabase("QSQLITE","connection1");
QString dataPath1 = QCoreApplication::applicationDirPath()+"/my1.db";
db1.setDatabaseName(dataPath1);
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 vachar(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')");
//创建另一个数据库
QSqlDatabase db2 = QSqlDatabase::addDatabase("QSQLITE","connection2");
QString dataPath2 = QCoreApplication::applicationDirPath()+"/my2.db";
db2.setDatabaseName(dataPath2);
if(!db2.open())
{
QMessageBox::critical(0,"Cannot open database2","Unable to establish a database connection.",QMessageBox::Cancel);
return false;
}
//这里指定连接
QSqlQuery query2(db2);
query2.exec("create table student(id int primary key, name vachar(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;
}
int main(int argc,char* argv[])
{
QApplication a(argc,argv);
if(!createConnection())
return 1;
QSqlDatabase db1 = QSqlDatabase::database("connection1");
QSqlQuery query1(db1);
query1.exec("select * from student");
while(query1.next())
{
qDebug()<<query1.value(0).toInt()<<query1.value(1).toString();
}
//使用query2 查询连接2的表
QSqlDatabase db2 = QSqlDatabase::database("connection2");
QSqlQuery query2(db2);
query2.exec("select * from student");
while(query2.next())
{
qDebug()<<query2.value(0).toInt()<<query2.value(1).toString();
}
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;
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);
//输出字段名和字段值
qDebug()<<"second field:"<<field.name()<<" field value:"<<field.value().toString();
return a.exec();
}