QSqlDatabase

QSqlDatabase 代表一个数据库连接,该类提供了访问数据库的接口,而该类的实例代表着一个数据库的连接

 

而这个连接通过支持的数据库驱动程序进行访问,或者, 你可以从QSqlDriver子类化数据库驱动程序。

 

我们可以通过QSqlDatabase的讲台成员函数addDatabase()来创建一个连接,调用这个函数时,我们可以传递我们要

访问哪种类型的数据库。

 

   下面是一个例子,连接到PostgreSQL 数据库

 

QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");

      db.setHostName("acidalia");

      db.setDatabaseName("customdb");

      db.setUserName("mojito");

      db.setPassword("J0a1m8");

      bool ok = db.open();

 

  我们可以通过静态函数database() 来返回一个数据库连接

  我们可以通过静态函数removeDatabse()来移除一个连接

  我们可以通过contains函数,来返回一个连接名称的列表

 

  一旦连接被建立,我们可以通过调用tables() 来返回一个表的列表,调用primaryIndex()来得到表单的主要索引,并且调用 record

  去得到table’s 的字段

 

  如果这个驱动支持事务控制,使用 transaction() 函数去开始事务控制,可以调用commit()提交操作和rollback()

回滚操作去完成它,调用hasFeature() 函数去查看该驱动是否支持事务控制。

 

  注意,当使用事务控制的时候,我们必须在查询之前调用transaction

 

  如果出现了错误则调用lastError()

  我们可以通过调用drives()来获得支持的数据库名称 ,我们可以通过调用idDriverAvaliable()

函数来确定这个驱动程序是否存在  

 

   如果你想创造你自己的驱动程序,你需要通过调用registerSqlDriver()

 

    QSqlDatabase::QSqlDatabase()

创建一个空的无效的数据库对象

QSqlDatabase::QSqlDatabase(const QSqlDatabase &other)

 创建一个拷贝对象

 

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

 

 

 

[protected] QSqlDatabase::QSqlDatabase(QSqlDriver *driver)

使用得到的驱动, 创建一个数据库连接

 

QSqlDatabase::~QSqlDatabase()

销毁对象,并释放资源

 

[static] QSqlDatabase QSqlDatabase::addDatabase(const QString &type, const QString &connectionName = QLatin1String( defaultConnection ))

添加一个连接

需要注意的是,如果我们增加了一个已经存在的connectName连接,则存在的connectName将会被替代

 

[static] QSqlDatabase QSqlDatabase::addDatabase(QSqlDriver *driver, const QString &connectionName = QLatin1String( defaultConnection ))

根据驱动Kauai添加一个连接

 Eg

   

  #include "qtdir/src/sql/drivers/psql/qsql_psql.cpp"

 

  PGconn *con = PQconnectdb("host=server user=bart password=simpson dbname=springfield");

  QPSQLDriver *drv =  new QPSQLDriver(con);

  QSqlDatabase db = QSqlDatabase::addDatabase(drv); // becomes the new default connection

  QSqlQuery query;

  query.exec("SELECT NAME, ID FROM STAFF");

 

   

     [static] QSqlDatabase QSqlDatabase::cloneDatabase(const QSqlDatabase &other, const QString &connectionName)

     拷贝一个数据库连接

 

         bool QSqlDatabase::commit()

             执行提交操作。

         

      QString QSqlDatabase::connectOptions() const

          返回连接选项

      QString QSqlDatabase::connectionName() const

          返回连接名字

       [static] bool QSqlDatabase::contains(const QString &connectionName = QLatin1String( defaultConnection ))

          返回连接名

         [static] QSqlDatabase QSqlDatabase::database(const QString &connectionName = QLatin1String( defaultConnection ), bool open = true)

          根据连接名返回一个QSqlDatabase实例

           

          QString QSqlDatabase::databaseName() const

           返回数据库的名称

 

            QString QSqlDatabase::driverName() const

           返回驱动名称

          

         [static] QStringList QSqlDatabase::drivers()

          返回支持的驱动名称。

          

QSqlQuery QSqlDatabase::exec(const QString &query = QString()) const

           执行sql查询

 

   QString QSqlDatabase::hostName() const

           

           返回域名

  [static] bool QSqlDatabase::isDriverAvailable(const QString &name)

         检测驱动

bool QSqlDatabase::isOpen() const

  检测是否连接

 

bool QSqlDatabase::isOpenError() const

 检测连接是否存在

bool QSqlDatabase::isValid() const

检测QSqlDatabase是否存在

bool QSqlDatabase::open()

建立连接

bool QSqlDatabase::open(const QString &user, const QString &password)

建立连接

[static] void QSqlDatabase::removeDatabase(const QString &connectionName)

bool QSqlDatabase::rollback()

回滚

void QSqlDatabase::setDatabaseName(const QString &name)

设置数据库名称

 

QStringList QSqlDatabase::tables(QSql::TableType type = QSql::Tables) const

返回数据库中的表的列表

 

 

 

 

          

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值