qt: 获取sql数据表的所有的字段;
1、 mysql 數據庫;
轉載:?https://www.cnblogs.com/fuqia/p/8994080.html
mysql安裝成功后可以看到已經存在mysql、information_schema和test這個幾個數據庫。
information_schema庫中有一個名為COLUMNS的表,這個表中記錄了數據庫中所有表的字段信息。
知道這個表后,獲取任意表的字段就只需要一條select語句即可。例如:
select COLUMN_NAME from information_schema.COLUMNS where table_name = 'your_table_name';上述的做法有一點問題,如果多個數據庫中存在你想要查詢的表名,那么查詢的結果會包括全部的字段信息。
通過DESC information_schema.COLUMNS可以看到該表中列名為TABLE_SCHEMA是記錄數據庫名,因此下面的寫法更為嚴格
select COLUMN_NAME from information_schema.COLUMNS where table_name = 'your_table_name' and table_schema = 'your_db_name';取字段注釋?
Select COLUMN_NAME 列名, DATA_TYPE 字段類型, COLUMN_COMMENT 字段注釋 from INFORMATION_SCHEMA.COLUMNS Where table_name = 'companies' ##表名 AND table_schema = 'testhuicard'##數據庫名 AND column_name LIKE 'c_name' ##字段名?
2、sqllite數據庫
獲取sqlite數據庫的數據表字段的關鍵是?PRAGMA table_info('tablename')
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | bool?outPutTableInfo(QString tabNmae){??? ????QSqlQuery query; ????QString strTableNmae = tabNmae;? ????QString str =?"PRAGMA table_info("?+ strTableNmae +?")";?????? ????query.prepare(str);?? ????if?(query.exec())?? ????{??????? ????????while?(query.next())???? ????????{?????????? ????????????qDebug() << QString(QString::fromLocal8Bit("字段數:%1???? 字段名:%2???? 字段類型:%3")).arg(query.value(0).toString()).arg(query.value(1).toString()).arg(query.value(2).toString());??????? ????????}?? ????}else{??????? ????????qDebug() << query.lastError();??????? ????????return?false; ????} } |
總結
以上是生活随笔為你收集整理的qt: 获取sql数据表的所有的字段;的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JDK和CGLIB动态代理区别
- 下一篇: 详解 springboot - 查看、修