现在的位置: 首页 > 综合 > 正文

qt数据库操作

2013年10月13日 ⁄ 综合 ⁄ 共 1721字 ⁄ 字号 评论关闭

先来看看qt支持的数据库类型:

Driver Type Description

QDB2

IBM DB2

QIBASE

Borland InterBase Driver

QMYSQL

MySQL Driver

QOCI

Oracle Call Interface Driver

QODBC

ODBC Driver (includes Microsoft SQL Server)

QPSQL

PostgreSQL Driver

QSQLITE

SQLite version 3 or above

QSQLITE2

SQLite version 2

QTDS

Sybase Adaptive Server

下面主要说明使用QODBC和QSQLITE的使用方法:


一:QODBC

QODBC使用windows系统自带的ODBC数据源来连接服务器上的数据库,具体配置方法,网上资料很多,我就不废话了。

我配置的ODBC名字为test1,ip地址设为本机地址。

那么QT对ODBC的支持设置为:

在项目文件中添加:

QT+=sql

在需要使用数据库的文件中添加头文件:

#include <Qtsql>
然后定义一个:
QSqlDatabase db;
语法代码为:
    db = QSqlDatabase::addDatabase("QODBC","test1");
//连接ODBC中名为test1的数据源
    QString dsn = QString::fromLocal8Bit( "DRIVER={SQL SERVER};SERVER=127.0.0.1;DATABASE=DataMon");
    db.setDatabaseName( dsn );
//设置驱动方式,服务器地址(我的为本机地址,所以设为回环地址),默认数据库名称
    if( !db.open( ) )// 打开ODBC
    {
        QMessageBox::critical(0,QLabel::trUtf8("数据库连接失败"),db.lastError().text());
        return false;
    }
    QSqlQuery qurey(db);// 执行sql语句
    bool succes=qurey.exec("SELECT distinct Farm_ID FROM Cage_Table");
    if( succes )
    {
        while(qurey.next())
         {
             qDebug()<<qurey.value(0).toInt();// 输出查询数据
             。。。。
          }
     }
至此结束
当然这些都是一些很基本的语句,其他还有很多方式可以设置数据库


二、QSQLITE3
同样的,在项目文件中需要添加

QT+=sql

在需要使用数据库的文件中添加头文件:

#include <Qtsql>
然后定义一个:
QSqlDatabase dbconnet = QSqlDatabase::addDatabase("QSQLITE");
dbconnet.setDatabaseName("Operation_Record");// 设置数据库名,如果需要路径的话,请使用"\\"
if( dbconnet.open() )
{
qDebug()<<"succes";
}
else
qDebug()<<"failed";
QSqlQuery query;//(dbconnet);
bool ok = query.exec("select * from System_Setting order by R_ID desc limit 0,1;");

    while( query.next() )
    {
        *textlist<<query.value(1).toString();//Username
        *textlist<<query.value(2).toString();//Port
        *textlist<<query.value(3).toString();//Cage_Choose
        *textlist<<query.value(4).toString();//Order
        *textlist<<query.value(5).toString();//Send_Interval
        *textlist<<query.value(6).toString();//Hex_SR
    }
    dbconnet.close();

sqlite3的使用要比sql server的使用简单的多,好用的多,个人认为。

抱歉!评论已关闭.