<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # QSqlDatabase Class Reference ## [[QtSql](index.htm) module] 該QSqlDatabase類表示一個到數據庫的連接。[More...](#details) ### Methods * `__init__ (self)` * `__init__ (self, QSqlDatabase?other)` * `__init__ (self, QString?type)` * `__init__ (self, QSqlDriver?driver)` * `close (self)` * `bool commit (self)` * `QString connectionName (self)` * `QString connectOptions (self)` * `QString databaseName (self)` * `QSqlDriver driver (self)` * `QString driverName (self)` * `QSqlQuery exec_ (self, QString?query?=?QString())` * `QString hostName (self)` * `bool isOpen (self)` * `bool isOpenError (self)` * `bool isValid (self)` * `QSqlError lastError (self)` * `QSql.NumericalPrecisionPolicy numericalPrecisionPolicy (self)` * `bool open (self)` * `bool open (self, QString?user, QString?password)` * `QString password (self)` * `int port (self)` * `QSqlIndex primaryIndex (self, QString?tablename)` * `QSqlRecord record (self, QString?tablename)` * `bool rollback (self)` * `setConnectOptions (self, QString?options?=?QString())` * `setDatabaseName (self, QString?name)` * `setHostName (self, QString?host)` * `setNumericalPrecisionPolicy (self, QSql.NumericalPrecisionPolicy?precisionPolicy)` * `setPassword (self, QString?password)` * `setPort (self, int?p)` * `setUserName (self, QString?name)` * `QStringList tables (self, QSql.TableType?type?=?QSql.Tables)` * `bool transaction (self)` * `QString userName (self)` ### Static Methods * `QSqlDatabase addDatabase (QString?type, QString?connectionName?=?QLatin1String(QSqlDatabase.defaultConnection))` * `QSqlDatabase addDatabase (QSqlDriver?driver, QString?connectionName?=?QLatin1String(QSqlDatabase.defaultConnection))` * `QSqlDatabase cloneDatabase (QSqlDatabase?other, QString?connectionName)` * `QStringList connectionNames ()` * `bool contains (QString?connectionName?=?QLatin1String(QSqlDatabase.defaultConnection))` * `QSqlDatabase database (QString?connectionName?=?QLatin1String(QSqlDatabase.defaultConnection), bool?open?=?True)` * `QStringList drivers ()` * `bool isDriverAvailable (QString?name)` * `registerSqlDriver (QString?name, QSqlDriverCreatorBase?creator)` * `removeDatabase (QString?connectionName)` * * * ## Detailed Description 該QSqlDatabase類表示一個到數據庫的連接。 該QSqlDatabase類提供了通過連接訪問數據庫的接口。 QSqlDatabase的實例代表連接。連接經由一個可訪問數據庫[supported database drivers](index.htm#supported-databases),其衍生自[QSqlDriver](qsqldriver.html)。或者,您也可以從繼承自己的數據庫驅動程序[QSqlDriver](qsqldriver.html)。看[How to Write Your Own Database Driver](index.htm#how-to-write-your-own-database-driver)了解更多信息。 通過調用靜態的創建一個連接(即QSqlDatabase的實例)[addDatabase](qsqldatabase.html#addDatabase)( )函數,在這里您可以指定[the driver or type of driver](index.htm#supported-databases)使用(比如,你要訪問什么樣的數據庫? )和一個連接名稱。一個連接是由它自己的名字眾所周知,_not_由數據庫的名稱將其連接到。你可以有多個連接到一個數據庫。 QSqlDatabase還支持的概念_default_連接,這是未命名的連接。要創建默認的連接,當你調用不通過連接名稱參數[addDatabase](qsqldatabase.html#addDatabase)( ) 。隨后,當你調用任何靜態成員函數,它的連接名稱的說法,如果你不通過連接名稱參數,則假定為默認連接。下面的代碼片斷顯示了如何創建并打開一個默認連接到PostgreSQL數據庫: ``` QSqlDatabase db = QSqlDatabase.addDatabase("QPSQL"); db.setHostName("acidalia"); db.setDatabaseName("customdb"); db.setUserName("mojito"); db.setPassword("J0a1m8"); bool ok = db.open(); ``` 一旦QSqlDatabase對象已經創建,以設置連接參數[setDatabaseName](qsqldatabase.html#setDatabaseName)( )[setUserName](qsqldatabase.html#setUserName)( )[setPassword](qsqldatabase.html#setPassword)( )[setHostName](qsqldatabase.html#setHostName)( )[setPort](qsqldatabase.html#setPort)()和[setConnectOptions](qsqldatabase.html#setConnectOptions)( ) 。然后調用[open](qsqldatabase.html#open)( )來激活到數據庫的物理連接。該連接不可用,直到你打開它。 上面定義的連接將是_default_連接,因為我們沒有給一個連接名稱[addDatabase()](qsqldatabase.html#addDatabase)。隨后,您可以通過調用得到的默認連接[database](qsqldatabase.html#database)( )無連接名稱參數: ``` QSqlDatabase db = QSqlDatabase.database(); ``` QSqlDatabase是一個值類。通過QSqlDatabase的一個實例數據庫連接所做的更改將影響QSqlDatabase ,代表相同的連接其他實例。使用[cloneDatabase](qsqldatabase.html#cloneDatabase)()來創建基于現有一個獨立的數據庫連接。 如果你創建多個數據庫連接,為每一個指定一個唯一的連接名稱,當你調用[addDatabase](qsqldatabase.html#addDatabase)( ) 。使用[database](qsqldatabase.html#database)( )有一個連接名稱來獲取連接。使用[removeDatabase](qsqldatabase.html#removeDatabase)( )有一個連接名稱刪除的連接。如果您嘗試刪除其他QSqlDatabase對象引用的連接QSqlDatabase輸出一個警告。使用[contains](qsqldatabase.html#contains)( ),看看是否一個給定的連接名稱為連接列表。 一旦建立了連接,你可以調用[tables](qsqldatabase.html#tables)()來獲取數據庫中,調用表的列表[primaryIndex](qsqldatabase.html#primaryIndex)()來獲取一個表的主索引,并調用[record](qsqldatabase.html#record)( )來獲取有關表的字段(例如,字段名)的元信息。 **Note:** [QSqlDatabase.exec](qsqldatabase.html#exec)( )已過時。使用[QSqlQuery.exec](qsqlquery.html#exec)( )來代替。 如果驅動程序支持的交易,使用[transaction](qsqldatabase.html#transaction)( )來啟動一個事務,[commit](qsqldatabase.html#commit)()或[rollback](qsqldatabase.html#rollback)()來完成它。使用[hasFeature()](qsqldriver.html#hasFeature)請問如果驅動程序支持的交易。**Note:**當使用事務時,必須啟動該交易在創建查詢之前。 如果一個錯誤發生,[lastError](qsqldatabase.html#lastError)( )將返回有關它的信息。 獲取可用的SQL驅動程序的名稱與[drivers](qsqldatabase.html#drivers)( ) 。檢查與特定驅動程序的存在[isDriverAvailable](qsqldatabase.html#isDriverAvailable)( ) 。如果您已經創建自己的自定義驅動程序,您必須進行注冊[registerSqlDriver](qsqldatabase.html#registerSqlDriver)( ) 。 * * * ## Method Documentation ``` QSqlDatabase.__init__ (self) ``` 創建一個空的,無效的[QSqlDatabase](qsqldatabase.html)對象。使用[addDatabase](qsqldatabase.html#addDatabase)( )[removeDatabase](qsqldatabase.html#removeDatabase)()和[database](qsqldatabase.html#database)( )來獲取有效的[QSqlDatabase](qsqldatabase.html)對象。 ``` QSqlDatabase.__init__ (self, QSqlDatabase?other) ``` 創建副本_other_。 ``` QSqlDatabase.__init__ (self, QString?type) ``` 這是一個重載函數。 創建[QSqlDatabase](qsqldatabase.html)使用由所述的驅動程序連接_type_。如果_type_無法識別,數據庫連接將沒有任何功能。 目前可用的驅動器類型有: | 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 | 額外的第三方驅動程序,包括您自己的自定義驅動程序,可以動態加載。 **See also** [SQL Database Drivers](index.htm),[registerSqlDriver](qsqldatabase.html#registerSqlDriver)()和[drivers](qsqldatabase.html#drivers)( ) 。 ``` QSqlDatabase.__init__ (self, QSqlDriver?driver) ``` 這是一個重載函數。 創建使用給定的數據庫連接_driver_。 ``` QSqlDatabase QSqlDatabase.addDatabase (QString?type, QString?connectionName?=?QLatin1String(QSqlDatabase.defaultConnection)) ``` [ 增加了一個數據庫,以數據庫連接使用的驅動程序的列表_type_和連接名稱_connectionName_。如果已經存在一個名為數據庫連接_connectionName_,則該連接被刪除。 數據庫連接是通過被稱為_connectionName_。返回新添加的數據庫連接。 ](qsqldatabase.html) [If _type_不可用或無法加載,](qsqldatabase.html)[isValid](qsqldatabase.html#isValid)( )返回False 。 If _connectionName_沒有指定,則新的連接成為應用程序的默認連接,并隨后調用[database](qsqldatabase.html#database)( )無連接名稱參數將返回默認的連接。如果_connectionName_這里提供的,使用的數據庫(_connectionName_)來檢索連接。 **Warning:**如果您添加了具有相同名稱的現有連接的連接,新的連接將會取代舊的。如果你調用這個函數一次以上,而無需指定_connectionName_,默認的連接將是一個替代。 使用連接之前,它必須被初始化。例如,調用一些或全部[setDatabaseName](qsqldatabase.html#setDatabaseName)( )[setUserName](qsqldatabase.html#setUserName)( )[setPassword](qsqldatabase.html#setPassword)( )[setHostName](qsqldatabase.html#setHostName)( )[setPort](qsqldatabase.html#setPort)()和[setConnectOptions](qsqldatabase.html#setConnectOptions)( ) ,最后是[open](qsqldatabase.html#open)( ) 。 **Note:**這個功能是[thread-safe](index.htm#thread-safe)。 **See also** [database](qsqldatabase.html#database)( )[removeDatabase](qsqldatabase.html#removeDatabase)()和[Threads and the SQL Module](index.htm#threads-and-the-sql-module)。 ``` QSqlDatabase QSqlDatabase.addDatabase (QSqlDriver?driver, QString?connectionName?=?QLatin1String(QSqlDatabase.defaultConnection)) ``` [](qsqldatabase.html) [當你想創建一個數據庫連接此重載很有用](qsqldatabase.html)[driver](qsqldriver.html)你實例化你自己。這可能是你自己的數據庫驅動程序,或者你可能只需要自己實例化Qt的驅動力之一。如果你這樣做,建議您在您的應用程序的驅動程序代碼。例如,您可以創建自己的QPSQL驅動這樣一個PostgreSQL連接: ``` #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](qsqldatabase.html) db = [QSqlDatabase](qsqldatabase.html).addDatabase(drv); // becomes the new default connection [QSqlQuery](qsqlquery.html) query; query.exec_("SELECT NAME, ID FROM STAFF"); ... ``` 上面的代碼設置了一個PostgreSQL連接并實例化一個QPSQLDriver對象。接下來,[addDatabase](qsqldatabase.html#addDatabase)()被調用,以連接添加到已知的連接,這樣它可用于通過Qt的SQL類。當驅動程序被實例化一個連接句柄(或一組手柄) , Qt的假設你已經打開了數據庫連接。 **Note:**我們假設`qtdir`是安裝Qt的目錄。這將拉動中所需要使用的PostgreSQL客戶端庫和實例化一個QPSQLDriver對象的代碼,假設你有PostgreSQL的頭放在你的頭文件搜索路徑。 請記住,你必須鏈接您的應用程序對數據庫客戶端庫。確保客戶端庫是在你的鏈接器的搜索路徑,并添加像這些行到你的`.pro`文件: ``` unix:LIBS += -lpq win32:LIBS += libpqdll.lib ``` 該方法描述的作品,所有提供的驅動程序。唯一的區別是在驅動程序構造器參數。下面是包含了Qt的驅動程序,其源代碼文件,以及它們的構造函數的參數表: | Driver | Class name | Constructor arguments | File to include | | --- | --- | --- | --- | | QPSQL | QPSQLDriver | PGconn *connection | `qsql_psql.cpp` | | QMYSQL | QMYSQLDriver | MYSQL *connection | `qsql_mysql.cpp` | | QOCI | QOCIDriver | OCIEnv *environment, OCISvcCtx *serviceContext | `qsql_oci.cpp` | | QODBC | QODBCDriver | SQLHANDLE environment, SQLHANDLE connection | `qsql_odbc.cpp` | | QDB2 | QDB2 | SQLHANDLE environment, SQLHANDLE connection | `qsql_db2.cpp` | | QTDS | QTDSDriver | LOGINREC *loginRecord, DBPROCESS *dbProcess, const [QString](qstring.html) &hostName | `qsql_tds.cpp` | | QSQLITE | QSQLiteDriver | sqlite *connection | `qsql_sqlite.cpp` | | QIBASE | QIBaseDriver | isc_db_handle connection | `qsql_ibase.cpp` | 主機名稱(或服務名稱)正在建設中的QTDSDriver建立內部查詢的新連接時需要。這是為了防止阻塞幾個時[QSqlQuery](qsqlquery.html)物同時使用。 **Warning:**添加具有相同的連接名稱與現有連接的數據庫連接,使現有連接被新的所取代。 **Warning:**在SQL框架采用的所有權_driver_。它不能被刪除。要刪除連接,請使用[removeDatabase](qsqldatabase.html#removeDatabase)( ) 。 **See also** [drivers](qsqldatabase.html#drivers)( ) 。 ``` QSqlDatabase QSqlDatabase.cloneDatabase (QSqlDatabase?other, QString?connectionName) ``` [](qsqldatabase.html) [克隆數據庫連接_other_和并將其存儲為_connectionName_。所有從原始數據庫的設置,例如](qsqldatabase.html)[databaseName](qsqldatabase.html#databaseName)( )[hostName](qsqldatabase.html#hostName)( )等,被復制的對面。什么都不做,如果_other_是一個無效的數據庫。返回新創建的數據庫連接。 **Note:**新的連接沒有被打開。使用新的連接之前,你必須調用[open](qsqldatabase.html#open)( ) 。 ``` QSqlDatabase.close (self) ``` 關閉數據庫連接,釋放佔用的所有資源和無效的任何現有[QSqlQuery](qsqlquery.html)所使用的數據庫對象。 這也將影響到這個份[QSqlDatabase](qsqldatabase.html)對象。 **See also** [removeDatabase](qsqldatabase.html#removeDatabase)( ) 。 ``` bool QSqlDatabase.commit (self) ``` 提交事務對數據庫如果驅動程序支持事務和[transaction](qsqldatabase.html#transaction)( )已經啟動。回報`true`如果操作成功。否則返回`false`。 **Note:**對于某些數據庫,提交會失敗,并返回`false`如果有一個[active query](qsqlquery.html#isActive)使用該數據庫的`SELECT`。使查詢[inactive](qsqlquery.html#isActive)在做之前提交。 Call [lastError](qsqldatabase.html#lastError)( )以獲取有關錯誤的信息。 **See also** [QSqlQuery.isActive](qsqlquery.html#isActive)( )[QSqlDriver.hasFeature](qsqldriver.html#hasFeature)()和[rollback](qsqldatabase.html#rollback)( ) 。 ``` QString QSqlDatabase.connectionName (self) ``` 返回連接的名稱,這可能是空的。**Note:**連接名稱是不[database name](qsqldatabase.html#databaseName)。 此功能被引入Qt的4.4 。 **See also** [addDatabase](qsqldatabase.html#addDatabase)( ) 。 ``` QStringList QSqlDatabase.connectionNames () ``` 返回一個包含所有連接的名稱的列表。 **Note:**這個功能是[thread-safe](index.htm#thread-safe)。 **See also** [contains](qsqldatabase.html#contains)( )[database](qsqldatabase.html#database)()和[Threads and the SQL Module](index.htm#threads-and-the-sql-module)。 ``` QString QSqlDatabase.connectOptions (self) ``` 返回用于該連接的連接選項字符串。該字符串可能是空的。 **See also** [setConnectOptions](qsqldatabase.html#setConnectOptions)( ) 。 ``` bool QSqlDatabase.contains (QString?connectionName?=?QLatin1String(QSqlDatabase.defaultConnection)) ``` 返回True如果數據庫連接的列表中包含_connectionName_否則返回False 。 **Note:**這個功能是[thread-safe](index.htm#thread-safe)。 **See also** [connectionNames](qsqldatabase.html#connectionNames)( )[database](qsqldatabase.html#database)()和[Threads and the SQL Module](index.htm#threads-and-the-sql-module)。 ``` QSqlDatabase QSqlDatabase.database (QString?connectionName?=?QLatin1String(QSqlDatabase.defaultConnection), bool?open?=?True) ``` [](qsqldatabase.html) [返回稱為數據庫連接_connectionName_。數據庫連接必須已經添加了](qsqldatabase.html)[addDatabase](qsqldatabase.html#addDatabase)( ) 。如果_open_為True(默認值),數據庫連接是不是已經打開,現在打開。如果沒有_connectionName_是指定使用的默認連接。如果_connectionName_在數據庫列表中不存在,則返回一個無效的連接。 **Note:**這個功能是[thread-safe](index.htm#thread-safe)。 **See also** [isOpen](qsqldatabase.html#isOpen)()和[Threads and the SQL Module](index.htm#threads-and-the-sql-module)。 ``` QString QSqlDatabase.databaseName (self) ``` 返回連接的數據庫名,它可能是空的。**Note:**數據庫名是沒有連接名稱。 **See also** [setDatabaseName](qsqldatabase.html#setDatabaseName)( ) 。 ``` QSqlDriver QSqlDatabase.driver (self) ``` [ 返回用于訪問數據庫連接的數據庫驅動程序。 ](qsqldriver.html) [**See also**](qsqldriver.html) [addDatabase](qsqldatabase.html#addDatabase)()和[drivers](qsqldatabase.html#drivers)( ) 。 ``` QString QSqlDatabase.driverName (self) ``` 返回連接的驅動程序名稱。 **See also** [addDatabase](qsqldatabase.html#addDatabase)()和[driver](qsqldatabase.html#driver)( ) 。 ``` QStringList QSqlDatabase.drivers () ``` 返回所有可用的數據庫驅動程序的列表。 **See also** [registerSqlDriver](qsqldatabase.html#registerSqlDriver)( ) 。 ``` QSqlQuery QSqlDatabase.exec_ (self, QString?query?=?QString()) ``` [](qsqlquery.html) [執行一條SQL語句在數據庫上,并返回一個](qsqlquery.html)[QSqlQuery](qsqlquery.html)對象。使用[lastError](qsqldatabase.html#lastError)( )來檢索錯誤信息。如果_query_是空的,空的,無效的查詢將返回和[lastError](qsqldatabase.html#lastError)()不受影響。 **See also** [QSqlQuery](qsqlquery.html)和[lastError](qsqldatabase.html#lastError)( ) 。 ``` QString QSqlDatabase.hostName (self) ``` 返回連接的主機名,它可能是空的。 **See also** [setHostName](qsqldatabase.html#setHostName)( ) 。 ``` bool QSqlDatabase.isDriverAvailable (QString?name) ``` 返回True如果一個叫做驅動程序_name_可用;否則返回False。 **See also** [drivers](qsqldatabase.html#drivers)( ) 。 ``` bool QSqlDatabase.isOpen (self) ``` 返回True如果數據庫連接是當前打開,否則返回False 。 ``` bool QSqlDatabase.isOpenError (self) ``` 返回True如果有一個錯誤打開數據庫連接,否則返回False 。錯誤信息可使用檢索到的[lastError](qsqldatabase.html#lastError)()函數。 ``` bool QSqlDatabase.isValid (self) ``` 返回True如果[QSqlDatabase](qsqldatabase.html)有一個有效的驅動程序。 例如: ``` [QSqlDatabase](qsqldatabase.html) db; qDebug() << db.isValid(); // Returns false db = [QSqlDatabase](qsqldatabase.html).database("sales"); qDebug() << db.isValid(); // Returns true if "sales" connection exists [QSqlDatabase](qsqldatabase.html).removeDatabase("sales"); qDebug() << db.isValid(); // Returns false ``` ``` QSqlError QSqlDatabase.lastError (self) ``` [ 返回有關數據庫上發生的最后一個錯誤信息。 ](qsqlerror.html) [發生在與一個單獨的查詢相結合的故障報告通過](qsqlerror.html)[QSqlQuery.lastError](qsqlquery.html#lastError)( ) 。 **See also** [QSqlError](qsqlerror.html)和[QSqlQuery.lastError](qsqlquery.html#lastError)( ) 。 ``` QSql.NumericalPrecisionPolicy QSqlDatabase.numericalPrecisionPolicy (self) ``` [ 返回數據庫連接的當前默認精度的政策。 此功能被引入Qt的4.6 。 ](qsql.html#NumericalPrecisionPolicy-enum) [**See also**](qsql.html#NumericalPrecisionPolicy-enum) [QSql.NumericalPrecisionPolicy](qsql.html#NumericalPrecisionPolicy-enum),[setNumericalPrecisionPolicy](qsqldatabase.html#setNumericalPrecisionPolicy)( )[QSqlQuery.numericalPrecisionPolicy](qsqlquery.html#numericalPrecisionPolicy)()和[QSqlQuery.setNumericalPrecisionPolicy](qsqlquery.html#setNumericalPrecisionPolicy)( ) 。 ``` bool QSqlDatabase.open (self) ``` 打開使用當前連接的值的數據庫連接。成功時返回TRUE ,否則返回False 。錯誤信息可以使用檢索[lastError](qsqldatabase.html#lastError)( ) 。 **See also** [lastError](qsqldatabase.html#lastError)( )[setDatabaseName](qsqldatabase.html#setDatabaseName)( )[setUserName](qsqldatabase.html#setUserName)( )[setPassword](qsqldatabase.html#setPassword)( )[setHostName](qsqldatabase.html#setHostName)( )[setPort](qsqldatabase.html#setPort)()和[setConnectOptions](qsqldatabase.html#setConnectOptions)( ) 。 ``` bool QSqlDatabase.open (self, QString?user, QString?password) ``` 這是一個重載函數。 打開使用給定的數據庫連接_user_命名并_password_。成功時返回TRUE ,否則返回False 。錯誤信息可使用檢索到的[lastError](qsqldatabase.html#lastError)()函數。 此功能不能存儲它被賦予的密碼。相反,該密碼被直接傳遞給驅動程序以打開連接且隨后被丟棄。 **See also** [lastError](qsqldatabase.html#lastError)( ) 。 ``` QString QSqlDatabase.password (self) ``` 返回連接的密碼。如果密碼沒有被設置[setPassword](qsqldatabase.html#setPassword)( ),并且如果該密碼是在給定的[open](qsqldatabase.html#open)( )調用,或者如果沒有使用密碼,則返回一個空字符串。 **See also** [setPassword](qsqldatabase.html#setPassword)( ) 。 ``` int QSqlDatabase.port (self) ``` 返回連接的端口號。該值是不確定的,如果該端口號沒有被設置。 **See also** [setPort](qsqldatabase.html#setPort)( ) 。 ``` QSqlIndex QSqlDatabase.primaryIndex (self, QString?tablename) ``` [](qsqlindex.html) [返回表的主索引_tablename_。如果沒有主索引存在一個空](qsqlindex.html)[QSqlIndex](qsqlindex.html)返回。 **See also** [tables](qsqldatabase.html#tables)()和[record](qsqldatabase.html#record)( ) 。 ``` QSqlRecord QSqlDatabase.record (self, QString?tablename) ``` [](qsqlrecord.html) [返回](qsqlrecord.html)[QSqlRecord](qsqlrecord.html)在該表中的所有字段(或視圖)的名稱叫做填充_tablename_。在該領域出現的記錄的順序是不確定的。如果沒有這樣的表(或視圖)存在,則返回一個空的記錄。 ``` QSqlDatabase.registerSqlDriver (QString?name, QSqlDriverCreatorBase?creator) ``` 該_creator_說法有它的所有權轉移給Qt的。 此功能寄存器稱為一個新的SQL驅動程序_name_,內部的SQL框架。如果你有一個自定義的SQL驅動程序,并且不希望將它編譯為一個插件,這是很有用的。 例如: ``` [QSqlDatabase](qsqldatabase.html).registerSqlDriver("MYDRIVER", new [QSqlDriverCreator](index.htm)<MyDatabaseDriver>); [QSqlDatabase](qsqldatabase.html) db = [QSqlDatabase](qsqldatabase.html).addDatabase("MYDRIVER"); ``` [QSqlDatabase](qsqldatabase.html)采取所有權_creator_指針,所以你一定不要自己將它刪除。 **See also** [drivers](qsqldatabase.html#drivers)( ) 。 ``` QSqlDatabase.removeDatabase (QString?connectionName) ``` 刪除數據庫連接_connectionName_從數據庫連接列表中。 **Warning:**不應該有開放的查詢時,這個函數被調用的數據庫連接上,否則會發生資源洩漏。 例如: ``` // WRONG [QSqlDatabase](qsqldatabase.html) db = [QSqlDatabase](qsqldatabase.html).database("sales"); [QSqlQuery](qsqlquery.html) query("SELECT NAME, DOB FROM EMPLOYEES", db); [QSqlDatabase](qsqldatabase.html).removeDatabase("sales"); // will output a warning // "db" is now a dangling invalid database connection, // "query" contains an invalid result set ``` 做正確的方法: ``` { [QSqlDatabase](qsqldatabase.html) db = [QSqlDatabase](qsqldatabase.html).database("sales"); [QSqlQuery](qsqlquery.html) query("SELECT NAME, DOB FROM EMPLOYEES", db); } // Both "db" and "query" are destroyed because they are out of scope [QSqlDatabase](qsqldatabase.html).removeDatabase("sales"); // correct ``` 要刪除默認的連接,它可能已經創建了一個調用[addDatabase](qsqldatabase.html#addDatabase)( )不指定連接名,你可以通過調用檢索默認連接名稱[connectionName](qsqldatabase.html#connectionName)( )返回的數據庫上[database](qsqldatabase.html#database)( ) 。請注意,如果尚未創建一個默認的數據庫無效的數據庫將被退回。 **Note:**這個功能是[thread-safe](index.htm#thread-safe)。 **See also** [database](qsqldatabase.html#database)( )[connectionName](qsqldatabase.html#connectionName)()和[Threads and the SQL Module](index.htm#threads-and-the-sql-module)。 ``` bool QSqlDatabase.rollback (self) ``` 回滾數據庫事務,如果驅動程序支持事務和[transaction](qsqldatabase.html#transaction)( )已經啟動。回報`true`如果操作成功。否則返回`false`。 **Note:**對于某些數據庫,回滾將失敗,并返回`false`如果有一個[active query](qsqlquery.html#isActive)使用該數據庫的`SELECT`。使查詢[inactive](qsqlquery.html#isActive)之前做回滾。 Call [lastError](qsqldatabase.html#lastError)( )以獲取有關錯誤的信息。 **See also** [QSqlQuery.isActive](qsqlquery.html#isActive)( )[QSqlDriver.hasFeature](qsqldriver.html#hasFeature)()和[commit](qsqldatabase.html#commit)( ) 。 ``` QSqlDatabase.setConnectOptions (self, QString?options?=?QString()) ``` 設置數據庫特定的_options_。這必須是打開連接前或不會有任何效果(或者你可以[close](qsqldatabase.html#close)( )的連接,調用這個函數,并[open](qsqldatabase.html#open)( )再次連線) 。 的格式_options_字符串是選項名或選項=值對的分號分隔的列表。該選項取決于所使用的數據庫客戶端上: | ODBC | MySQL | PostgreSQL | | --- | --- | --- | | * SQL_ATTR_ACCESS_MODE * SQL_ATTR_LOGIN_TIMEOUT * SQL_ATTR_CONNECTION_TIMEOUT * SQL_ATTR_CURRENT_CATALOG * SQL_ATTR_METADATA_ID * SQL_ATTR_PACKET_SIZE * SQL_ATTR_TRACEFILE * SQL_ATTR_TRACE * SQL_ATTR_CONNECTION_POOLING * SQL_ATTR_ODBC_VERSION | * CLIENT_COMPRESS * CLIENT_FOUND_ROWS * CLIENT_IGNORE_SPACE * CLIENT_SSL * CLIENT_ODBC * CLIENT_NO_SCHEMA * CLIENT_INTERACTIVE * UNIX_SOCKET * MYSQL_OPT_RECONNECT | * connect_timeout * options * tty * requiressl * service | | DB2 | OCI | TDS | | --- | --- | --- | | * SQL_ATTR_ACCESS_MODE * SQL_ATTR_LOGIN_TIMEOUT | * OCI_ATTR_PREFETCH_ROWS * OCI_ATTR_PREFETCH_MEMORY | _none_ | | SQLite | Interbase | | --- | --- | | * QSQLITE_BUSY_TIMEOUT * QSQLITE_OPEN_READONLY * QSQLITE_ENABLE_SHARED_CACHE | * ISC_DPB_LC_CTYPE * ISC_DPB_SQL_ROLE_NAME | 示例: ``` ... // MySQL connection db.setConnectOptions("CLIENT_SSL=1;CLIENT_IGNORE_SPACE=1"); // use an SSL connection to the server if (!db.open()) { db.setConnectOptions(); // clears the connect option string ... } ... // PostgreSQL connection db.setConnectOptions("requiressl=1"); // enable PostgreSQL SSL connections if (!db.open()) { db.setConnectOptions(); // clear options ... } ... // ODBC connection db.setConnectOptions("SQL_ATTR_ACCESS_MODE=SQL_MODE_READ_ONLY;SQL_ATTR_TRACE=SQL_OPT_TRACE_ON"); // set ODBC options if (!db.open()) { db.setConnectOptions(); // don't try to set this option ... } ``` 請參閱客戶端庫文件有關不同選項的詳細信息。 **See also** [connectOptions](qsqldatabase.html#connectOptions)( ) 。 ``` QSqlDatabase.setDatabaseName (self, QString?name) ``` 設置連接的數據庫名_name_。有效果,數據庫名稱必須設置_before_該連接是[opened](qsqldatabase.html#open)。或者,您可以[close](qsqldatabase.html#close)( )的連接,設置數據庫名,調用[open](qsqldatabase.html#open)( )一次。**Note:**該_database name_是不_connection name_。連接名稱必須傳遞給[addDatabase](qsqldatabase.html#addDatabase)( )在連接對象創建的時間。 對于QOCI ( Oracle)的驅動程序,數據庫名是TNS服務名稱。 為QODBC驅動程序,_name_可以是一個DSN , DSN的一個文件名(在這種情況下,該文件必須有一個`.dsn`擴展名) ,或連接字符串。 例如, Microsoft Access中用戶可以使用下面的連接字符串打開一個`.mdb`直接文件,而不必在ODBC管理器創建一個DSN入口, : ``` ... db = [QSqlDatabase](qsqldatabase.html).addDatabase("QODBC"); db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=myaccessfile.mdb"); if (db.open()) { // success! } ... ``` 沒有默認值。 **See also** [databaseName](qsqldatabase.html#databaseName)( )[setUserName](qsqldatabase.html#setUserName)( )[setPassword](qsqldatabase.html#setPassword)( )[setHostName](qsqldatabase.html#setHostName)( )[setPort](qsqldatabase.html#setPort)( )[setConnectOptions](qsqldatabase.html#setConnectOptions)()和[open](qsqldatabase.html#open)( ) 。 ``` QSqlDatabase.setHostName (self, QString?host) ``` 設置連接的主機名_host_。有效,主機名必須設置_before_該連接是[opened](qsqldatabase.html#open)。或者,您可以[close](qsqldatabase.html#close)( )的連接,設置主機名,并調用[open](qsqldatabase.html#open)( )一次。 沒有默認值。 **See also** [hostName](qsqldatabase.html#hostName)( )[setUserName](qsqldatabase.html#setUserName)( )[setPassword](qsqldatabase.html#setPassword)( )[setDatabaseName](qsqldatabase.html#setDatabaseName)( )[setPort](qsqldatabase.html#setPort)( )[setConnectOptions](qsqldatabase.html#setConnectOptions)()和[open](qsqldatabase.html#open)( ) 。 ``` QSqlDatabase.setNumericalPrecisionPolicy (self, QSql.NumericalPrecisionPolicy?precisionPolicy) ``` 設置使用這個數據庫連接創建查詢的默認數值精度的政策_precisionPolicy_。 注意:不支持用低精度取數值的驅動程序將忽略精度政策。您可以使用[QSqlDriver.hasFeature](qsqldriver.html#hasFeature)( )來找出驅動程序是否支持此功能。 注意:默認精度策略設置來_precisionPolicy_不影響任何當前活動的查詢。 此功能被引入Qt的4.6 。 **See also** [QSql.NumericalPrecisionPolicy](qsql.html#NumericalPrecisionPolicy-enum),[numericalPrecisionPolicy](qsqldatabase.html#numericalPrecisionPolicy)( )[QSqlQuery.setNumericalPrecisionPolicy](qsqlquery.html#setNumericalPrecisionPolicy)()和[QSqlQuery.numericalPrecisionPolicy](qsqlquery.html#numericalPrecisionPolicy)( ) 。 ``` QSqlDatabase.setPassword (self, QString?password) ``` 設置連接的密碼_password_。有效果,必須設置密碼_before_該連接是[opened](qsqldatabase.html#open)。或者,您可以[close](qsqldatabase.html#close)( )的連接,設置密碼,并調用[open](qsqldatabase.html#open)( )一次。 沒有默認值。 **Warning:**此功能會將密碼中的Qt純文本。使用[open](qsqldatabase.html#open)( )調用,需要一個密碼作為參數,以避免這種行為。 **See also** [password](qsqldatabase.html#password)( )[setUserName](qsqldatabase.html#setUserName)( )[setDatabaseName](qsqldatabase.html#setDatabaseName)( )[setHostName](qsqldatabase.html#setHostName)( )[setPort](qsqldatabase.html#setPort)( )[setConnectOptions](qsqldatabase.html#setConnectOptions)()和[open](qsqldatabase.html#open)( ) 。 ``` QSqlDatabase.setPort (self, int?p) ``` 設置連接的端口號_port_。有效的端口號必須設置_before_該連接是[opened](qsqldatabase.html#open)。或者,您可以[close](qsqldatabase.html#close)( )的連接,設置端口號,并調用[open](qsqldatabase.html#open)( )再次.. 沒有默認值。 **See also** [port](qsqldatabase.html#port)( )[setUserName](qsqldatabase.html#setUserName)( )[setPassword](qsqldatabase.html#setPassword)( )[setHostName](qsqldatabase.html#setHostName)( )[setDatabaseName](qsqldatabase.html#setDatabaseName)( )[setConnectOptions](qsqldatabase.html#setConnectOptions)()和[open](qsqldatabase.html#open)( ) 。 ``` QSqlDatabase.setUserName (self, QString?name) ``` 設置連接的用戶名_name_。有效果,用戶名必須設置_before_該連接是[opened](qsqldatabase.html#open)。或者,您可以[close](qsqldatabase.html#close)( )的連接,設置用戶名和調用[open](qsqldatabase.html#open)( )一次。 沒有默認值。 **See also** [userName](qsqldatabase.html#userName)( )[setDatabaseName](qsqldatabase.html#setDatabaseName)( )[setPassword](qsqldatabase.html#setPassword)( )[setHostName](qsqldatabase.html#setHostName)( )[setPort](qsqldatabase.html#setPort)( )[setConnectOptions](qsqldatabase.html#setConnectOptions)()和[open](qsqldatabase.html#open)( ) 。 ``` QStringList QSqlDatabase.tables (self, QSql.TableType?type?=?QSql.Tables) ``` 返回數據庫的表,系統表和視圖的列表,所指定的參數_type_。 **See also** [primaryIndex](qsqldatabase.html#primaryIndex)()和[record](qsqldatabase.html#record)( ) 。 ``` bool QSqlDatabase.transaction (self) ``` 開始一個事務在數據庫上,如果驅動程序支持的交易。回報`true`如果操作成功。否則返回`false`。 **See also** [QSqlDriver.hasFeature](qsqldriver.html#hasFeature)( )[commit](qsqldatabase.html#commit)()和[rollback](qsqldatabase.html#rollback)( ) 。 ``` QString QSqlDatabase.userName (self) ``` 返回連接的用戶名,它可能是空的。 **See also** [setUserName](qsqldatabase.html#setUserName)( ) 。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看