0

我一直在尝试使用以下语句计算数据库中表中的列数:

    rs = st.executeQuery("SELECT COUNT(*) FROM information_schema.columns WHERE table_name = '"+TableName+"'");
            while (rs.next()) {
               i = rs.getInt(1);
    }

对于下表表格,此代码返回“6”。如果它只计算列,它必须返回 3,如果它计算所有记录的列,则返回值必须是 12。我的问题是我怎么会得到 6 值。

|Username|   |Password|   |Level|
|Admin   |   |Admin   |   |1    |
|User    |   |User    |   |2    |
|Staff   |   |Staff   |   |3    |
|User1   |   |User1   |   |2    |

以及如何正确计算表格的列数?

4

3 回答 3

3

以下查询返回您拥有的列数。如果要获得 12,则必须乘以表中的行数:

SELECT COUNT(*)
FROM `INFORMATION_SCHEMA`.`COLUMNS` 
WHERE `TABLE_SCHEMA`='Yourdatabase' 
    AND `TABLE_NAME`='yourtable';

sqlfiddle中查看

于 2013-09-14T21:28:32.183 回答
1

还要指定数据库,您可能在其他数据库中有同名的表

...FROM information_schema.columns WHERE table_schema = 'myDB'... 
于 2013-09-14T21:35:51.360 回答
0

我希望你在java中工作。你也可以试试这个

rs = st.executeQuery("select * from "+TableName+" limit 1");
ResultSetMetaData metadata = rs.getMetaData();
int columnsNumber = metadata.getColumnCount();
于 2013-09-14T21:37:16.877 回答