计算数据库sqlite中的表数

时间:2013-04-06 17:27:17

标签: sqlite

我找不到用JAVA计算数据库中的表数和要滚动的系统的方法。

我有一个大小为100000列×100行的矩阵M,我不得不打破多个表上数据库的复制,原因有很多,我在那里解释一下。 现在我必须读取数据库以重新加载矩阵M2,其中M2 = M,M的全部内容但不知道该怎么做因为我找不到一种方法来计算构成包含数据库的数据库的数量M. 我找到了这个话题:

Count the number of tables in the sqlite database

但我找不到“Cursor”和“getReadableDatabase”。 我在哪里可以下载最新版本的SQLite for java? 我使用以下版本:

“源码-JDBC-3.7.15-快照2.jar”


如果我写:

int numero_tabelle = 0;
        try {
            Class.forName("org.sqlite.JDBC").getInterfaces();
            String nome = "jdbc:sqlite:" + nome_database;
            Connection conn = DriverManager.getConnection(nome);
            Statement stat = conn.createStatement();
            ResultSet rs = stat.executeQuery("SELECT COUNT(*) FROM sqlite_master WHERE type = 'table'"); 
            //ResultSet rs = stat.executeQuery("SELECT * FROM sqlite_master WHERE type = 'table'");
            numero_tabelle = rs.getInt("sqlite_master");
            conn.close();
            rs.close();
        } catch (ClassNotFoundException a) {
            System.out.println("Manca la libreria SQLITE.");
        } catch (SQLException b) {
            System.out.println(nome_database + " inesistente.");
            System.out.println("E' anche possibile "
                    + "che le risorse hardware siano insufficienti.");
        }
        System.out.println("Number of tables: " + numero_tabelle);

我明白了:

SuperM.sqlite inesistente.
E' anche possibile che le risorse hardware siano insufficienti.
Number of tables: 0

:(

2 个答案:

答案 0 :(得分:3)

使用以下查询来实现您的目标,

SELECT count(*) FROM sqlite_master WHERE type = 'table' AND name != 'android_metadata' AND name != 'sqlite_sequence';

它将返回表的计数。

答案 1 :(得分:2)

SQLite有一个系统表sqlite_master,其中包含每个数据库对象的记录。

要获取表的数量,请执行以下查询:

rs = stat.executeQuery("SELECT * FROM sqlite_master WHERE type = 'table'");

将返回每个表的一条记录。

或者,执行如下查询:

rs = stat.executeQuery("SELECT COUNT(*) FROM sqlite_master WHERE type = 'table'");
int tableCount = rs.getInt(1);

将返回一个包含表格数的记录。