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')

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; 
    }
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM