【发布时间】:2017-08-16 07:36:31
【问题描述】:
我想使用 DatabaseMetaData 检索 SQLite .db 文件中特定表中所有列的名称,但是当表的列数超过 500 时,我得到 SQLException
java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (too many terms in compound SELECT)
我的代码如下所示:
metaData = connection.getMetaData();
for(String name : tableNames){
ResultSet rs = metaData.getColumns(null, null, name, null);
/*Some code here*/
}
这适用于少于 500 列的表。
我的问题是:还有其他方法可以获取某个表中的所有列名吗?
有没有办法从超过 500 列的表(作为 ResultSet)中获取所有列?
【问题讨论】:
-
请发布整个堆栈跟踪。请注意,这不是严格意义上的 JDBC 或 Java 问题,但您似乎已经达到了 sqlite 驱动程序的实现限制。您可能需要考虑为该驱动程序提交错误。
-
一个表超过 500 列?天啊。我会将此例外视为重新考虑您的数据库设计的邀请。
-
感谢Mark指点,这可能确实是驱动的问题。并且数据库有一些巨大的表,但不幸的是我对此无能为力 - 我必须以某种方式处理它们
-
顺便说一句,你的标题是行
-
为什么对大量的列无能为力?是因为你不被允许,还是因为你不知道怎么做?