PySide數據庫類學習QSqlQuery(一)

 

QSqlQuery html

摘要 git

函數 github

·                                 def addBindValue (val[, type=QSql.In]) sql

·                                 def at () 數據庫

·                                 def bindValue (placeholder, val[, type=QSql.In]) ide

·                                 def bindValue (pos, val[, type=QSql.In]) 函數

·                                 def boundValue (placeholder) spa

·                                 def boundValue (pos) htm

·                                 def boundValues () ci

·                                 def clear ()

·                                 def driver ()

·                                 def execBatch ([mode=ValuesAsRows])

·                                 def exec_ ()

·                                 def exec_ (query)

·                                 def executedQuery ()

·                                 def finish ()

·                                 def first ()

·                                 def isActive ()

·                                 def isForwardOnly ()

·                                 def isNull (field)

·                                 def isSelect ()

·                                 def isValid ()

·                                 def last ()

·                                 def lastError ()

·                                 def lastInsertId ()

·                                 def lastQuery ()

·                                 def next ()

·                                 def nextResult ()

·                                 def numRowsAffected ()

·                                 def numericalPrecisionPolicy ()

·                                 def prepare (query)

·                                 def previous ()

·                                 def record ()

·                                 def result ()

·                                 def seek (i[, relative=false])

·                                 def setForwardOnly (forward)

·                                 def setNumericalPrecisionPolicy (precisionPolicy)

·                                 def size ()

·                                 def value (i)

細節描述

PySide.QtSql.QSqlQuery 提供執行SQL語句的方法。

PySide.QtSql.QSqlQuery 能夠執行標準的DMLDDL,也能夠執行專有的數據庫語句。

若是成功執行SQL語句,設置query 的狀態爲活動的,因此PySide.QtSql.QSqlQuery.isActive()返回true,不然查詢狀態設爲非活動的。

當執行一個新的SQL語句,query將固定在一個有效的記錄位置,你能夠使用如下函數進行導航:

·   PySide.QtSql.QSqlQuery.next()

·   PySide.QtSql.QSqlQuery.previous()

·   PySide.QtSql.QSqlQuery.first()

·   PySide.QtSql.QSqlQuery.last()

·   PySide.QtSql.QSqlQuery.seek()

這些函數提供了向前,向後 或任意查詢返回記錄的方法,你也能夠用PySide.QtSql.QSqlQuery.setForwardOnly()來設置僅向前查詢記錄。

獲取記錄內容能夠使用 PySide.QtSql.QSqlQuery.value()方法。

例如:

query = QSqlQuery("SELECT country FROM artist")

while query.next():

    country = query.value(0)

    doSomething(country)

使用value(int)函數時,int表示字段的位置,起始值是0.

使用」select * from….」進行查詢時,請注意字段位置所對應的int值,以避免發生順序錯誤。

在有些請況想引用具體字段的值,能夠使用PySide.QtSql.QSqlQuery.record(). PySide.QtSql.QSqlRecord.indexOf()函數來肯定int的值。

:

query = QSqlQuery("SELECT * FROM artist")

fieldNo = query.record().indexOf("country")

while query.next():

    country = query.value(fieldNo)

    doSomething(country)

PySide.QtSql.QSqlQuery支持佔位符綁定參數

能夠用 PySide.QtSql.QSqlQuery.numRowsAffected()PySide.QtSql.QSqlQuery.size() 來檢測多少條數據受影響,和檢索了多大的數據。

如下是佔位符綁定的例子:

使用名字綁定:

query = QSqlQuery()

query.prepare("INSERT INTO person (id, forename, surname) "

              "VALUES (:id, :forename, :surname)")

query.bindValue(":id", 1001)

query.bindValue(":forename", "Bart")

query.bindValue(":surname", "Simpson")

query.exec_()

根據位置綁定:

query = QSqlQuery()

query.prepare("INSERT INTO person (id, forename, surname) "

              "VALUES (:id, :forename, :surname)")

query.bindValue(0, 1001)

query.bindValue(1, "Bart")

query.bindValue(2, "Simpson")

query.exec_()

使用佔位符綁定值 (版本1):

query = QSqlQuery()

query.prepare("INSERT INTO person (id, forename, surname) "

              "VALUES (?, ?, ?)")

query.bindValue(0, 1001)

query.bindValue(1, "Bart")

query.bindValue(2, "Simpson")

query.exec_()

使用佔位符綁定值 (版本2):

query = QSqlQuery()

query.prepare("INSERT INTO person (id, forename, surname) "

              "VALUES (?, ?, ?)")

query.addBindValue(1001)

query.addBindValue("Bart")

query.addBindValue("Simpson")

query.exec_()

使用存儲過程綁定的例子:

 AsciiToInt() 是存儲過程,經過參數傳遞綁定。

query = QSqlQuery()

query.prepare("CALL AsciiToInt(?, ?)")

query.bindValue(0, "A")

query.bindValue(1, 0, QSql.Out)

query.exec_()

i = query.boundValue(1) # i is 65

注,哪些未綁定參數的將保留其值。

存儲過程使用return語句返回一個值或多個結果集。但須要數據庫驅動支持。

警告:創建 PySide.QtSql.QSqlQuery前必須加載驅動並打開鏈接。同時這個鏈接必須保持打開,不然是一種未定義的行爲。

相關文章
相關標籤/搜索