0

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

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

统计sqlite数据库中的表数

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

“sqlite-jdbc-3.7.15-SNAPSHOT-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

:(

4

2 回答 2

3

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

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

它将返回表的计数。

于 2017-01-05T13:05:44.487 回答
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);

这将返回一条包含表数的记录。

于 2013-04-07T08:44:04.087 回答