#include <QtCore/QCoreApplication>
#include <QtSql>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//列出支持的数据库类型
qDebug() << "Available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() << "\t" << driver;
//将SQLITE数据库加入到应用程序的数据库连接组中,并命名SQLITE
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE","SQLITE");
db.setDatabaseName(":memory:"); //内存数据库
//db.setDatabaseName("D:/student.db"); //文件数据库
if(!db.open()) //打开数据库
{
qDebug()<< "Cannot open database-SQLITE" \
<<"Unable to establish a database connection." \
<< db.lastError().text();
return false;
}
//将ODBC数据库加入到应用程序的数据库连接组中,并命名ODBC
db =QSqlDatabase::addDatabase("QODBC","ODBC");
//连接ODBC-Access-DB_ORDERS_DRIVER
db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=D:/student.mdb");
if (!db.open()) {
qDebug()<< "Cannot open database-Access" \
<<"Unable to establish a database connection." \
<< db.lastError().text();
return false;
}
//从应用程序的数据库连接组中分别取得SQLITE、ODBC连接
QSqlDatabase dbS =QSqlDatabase::database("SQLITE");
QSqlDatabase dbO =QSqlDatabase::database("ODBC");
//分别创建查询对象,以执行相关QSL语句
QSqlQuery queryS(dbS);
QSqlQuery queryO(dbO);
bool bOk=false;
bOk=queryS.exec("create table student(id int primary key,\
name varchar (20))");
//新建student表,id设置为主键,还有一个name项
if (!bOk)
qDebug() << queryS.lastError().text();
else
qDebug() << "create -ok";
//向SQLITE的表中插入1条记录
bOk=queryS.exec("insert into student values(1,'xiaogang')");
if (!bOk)
qDebug() << queryS.lastError().text();
else
qDebug() << "insert -ok";
//查找表中id =1 的记录的id项和name项的值
bOk=queryS.exec("select id,name from student where id = 1");
if (!bOk)
qDebug() << queryS.lastError().text();
else
qDebug() << "select -ok";
//query.next()指向查找到的第一条记录,然后每次后移一条记录
while(queryS.next())
{
int ele0 = queryS.value(0).toInt(); //query.value(0)是id的值,将其转换为int型
QString ele1 =queryS.value(1).toString();
qDebug() << "First record got:" << ele0 <<ele1 ; //输出两个值
//在ODBC中建表,并把从SQLITE中得到的数据插入
QStringList sl=dbO.tables();
foreach(QString table, sl)
{
if("student"==table)
{
qDebug() << "table student already exist,will be droped";
bOk=queryO.exec("drop table student");
}
}
bOk=queryO.exec("create table student (id int primary key,name varchar(20))");
queryO.prepare("insert into student (id, name) values (?, ?)");
queryO.bindValue(0, ele0);
queryO.bindValue(1, ele1);
bOk=queryO.exec();
}
queryS.clear();
queryO.clear();
dbS.close();
dbO.close();
QSqlDatabase::removeDatabase("SQLITE");
QSqlDatabase::removeDatabase("ODBC");
return a.exec();
}