qt sql 資料庫
Qt SQL C++ Classes
QSqlDatabase:Represents a connection to a database,代表了一個連線的資料庫
QSqlDriverCreator:Template class that provides a SQL driver factory for a specific driver type,
QSqlDriverCreatorBase:The base class for SQL driver factories
QSqlDriver:Abstract base class for accessing specific SQL databases
QSqlDriverPlugin:Abstract base for custom QSqlDriver plugins
QSqlError:SQL database error information,,,sql訪問資料庫時的錯誤資訊
QSqlField:Manipulates the fields in SQL database tables and views
QSqlIndex:Functions to manipulate and describe database indexes
QSqlQuery:Means of executing and manipulating SQL statements,執行或維護sql語句
QSqlRecord:Encapsulates a database record,壓縮封裝了資料庫的記錄
QSqlResult:Abstract interface for accessing data from specific SQL databases,提供了訪問sql獲得資料的介面
-
QSqlQueryModel
該類提供了一種針對SQL結果集的只讀資料模式,是用於執行SQL語句和遍歷結果集的高階介面。它建立在QSqlQuery之上,能夠為顯示類如QTableView提供資料。例如:
QSqlQueryModel *model = new QSqlQueryModel;
model->setQuery("SELECT name, salary FROM employee");
model->setHeaderData(0, Qt::Horizontal, tr("Name"));
model->setHeaderData(1,Qt::Horizontal, tr("Salary"));
QTableView *view = new QTableView;
view->setModel(model);
view->show();
//上述程式碼,我們設定了物件model的檢索,然後設定了顯示錶頭欄位。QSqlQueryModel 也能夠用來程式設計訪問資料庫,而不需要顯示。
QSqlTableModel model;
model.setTable("employee");
model.select();
int salary = model.record(4).value("salary").toInt();
//上述程式碼獲取sql結果集中第四條記錄的salary單元的值。假如salary位於第2列,也可通過如下程式碼獲取。
int salary = model.data(model.index(4, 2)).toInt();
預設情況model為只讀模式,為了讓其可讀寫,可重寫整合該類重寫setData和flags函式。另一個選擇是使用QSqlTableModel類,該類可對資料庫的單個表格進行讀寫操作。querymodel例子演示了怎麼通過QSqlQueryModel顯示sql結果,使用者怎麼繼承QSqlQuerModel來自定義資料內容,怎樣建立一個基於QSqlQueryModel的可讀寫模式。在sql語句中,如果資料庫不能返回查詢中所選行的數量,則該模型將以增量方式獲取行。更多資訊參加fetchMore()。
重要函式:
1,int columnCount(),introwCount():獲取當前列數或行數
2,fetchMore():從資料庫獲取更多行
3,headerData():返回指定行的表頭資料
4,insertColumns():指定位置插入一定數目的列
5,lastError():返回最近一次的錯誤資訊
6,query():返回當前檢索
7,record():範圍指定行的記錄
QSqlRelationalDelegate:Delegate that is used to display and edit data from a QSqlRelationalTableModel.用於顯示/編輯來自QSqlRelationalTableMode的資料的代理
QSqlRelation:Stores information about an SQL foreign key:
QSqlRelationalTableModel:Editable data model for a single database table, with foreign key support
QSqlTableModel:Editable data model for a single database table
QSqlRecord
-
QSqlField
用於操控sql資料庫和檢視中的欄位,代表著資料庫或檢視中單列的特性,比如資料型別,列名稱,也代表著一列所包含的能夠改變或顯示的值。QSqlField物件很少在應用程式程式碼中顯式建立。 通常可以通過已經包含欄位列表的QSqlRecords間接訪問它們。
重要函式:
-
defaultValue,setDefaultValue返回和設定欄位的預設值
- isAutoValue,如果值通過資料庫自動生成,則返回true,如自動增加的主鍵值
- setAutoValue,標記該欄位是否為為自動生成的值。
- isGenerated,setGenerated,返回或設定值的生成狀態。設定生成狀態。 如果gen為false,則不會為此欄位生成SQL; 否則,Qt類(例如QSqlQueryModel和QSqlTableModel)將為此欄位生成SQL。
- length,setLength,返回或設定欄位長度。設定欄位長度時,對於字串,這是字串可以容納的最大字元數。 對於其他型別,含義也有所不同。
- name,setName,返回或設定欄位名稱
- precision,setPrecision,設定或返回欄位精度,只對數字型別有用。
- isReadOnly,setReadOnly,判斷是否為只讀欄位,設定為只讀欄位,對於只讀欄位,不能設定其值也不能清空其值。
- setRequired,setRequiredStatus(),requiredStatus().,設定或範圍欄位是否必須的,有必須的(QSqlField::Required)和可選擇(QSqlField::Optional)的兩種狀態。
- setType,type,設定或返回當前欄位的型別,即為QVariant的型別之一
- value,setValue,設定或返回當前欄位的值,設定為空值時,採用clear