· 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 能夠執行標準的DML或DDL,也能夠執行專有的數據庫語句。
若是成功執行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前必須加載驅動並打開鏈接。同時這個鏈接必須保持打開,不然是一種未定義的行爲。