如何显示 Java SQLite3 数据库中存在的表名? [复制]

Posted

技术标签:

【中文标题】如何显示 Java SQLite3 数据库中存在的表名? [复制]【英文标题】:How do I show the table names that exist in a Java SQLite3 database? [duplicate] 【发布时间】:2018-08-04 07:02:20 【问题描述】:

本着测试驱动设计的精神,我想测试表是否在我的 SQLite3 数据库中正确创建。为此,我想通过 SQL 查询列出表名。

我创建了表格:

public static void setupTables()
    try(Statement stmt = con.createStatement()) 
        String sql_student = ("CREATE TABLE IF NOT EXISTS " + STUDENT_TABLE + "(\n "
                + ID + " integer PRIMARY KEY,\n "
                + FIRSTNAME + " text,\n "
                + LASTNAME + " text\n"
                + ");");
        String sql_teacher = ("CREATE TABLE IF NOT EXISTS " + TEACHER_TABLE + "(\n "
                + ID + " integer PRIMARY KEY,\n "
                + FIRSTNAME + " text,\n "
                + LASTNAME + " text\n"
                + ");");

        stmt.execute(sql_student);
        stmt.execute(sql_teacher);

        stmt.close();

    catch(Exception e)
        e.printStackTrace();
    

我的测试需要什么查询?我是否需要关注顺序,或者创建表的顺序是否保证它们将始终以相同的顺序存储?

【问题讨论】:

【参考方案1】:

1) ATTACH mydb.db as my_db 2)SELECT name FROM my_db.sqlite_master where type='table'; 3) 临时表:SELECT name FROM sqlite_temp_master WHERE type='table';

希望对您有所帮助!

【讨论】:

是否有需要 ATTACH 的原因?在我看来,这会导致数据库必须是一个文件,并且它不能与内存数据库一起使用。 仅当您还没有附加数据库时。如果您没有附加它,则 .tables 和 .schema 中的辅助函数将查询主数据库的 SQLITE_MASTER 表。 我希望我在 Java 中打开的连接特定于某个数据库,并且如果我有多个数据库,我会有多个连接选项。是否有充分的理由以始终使用附加的方式在 Java 中构建事物? 我不认为您在 java 中打开的每个 SQLConnection 都没有附加到正确的数据库。所以,我认为你可以跳过第一步。 你为什么不给我投票?

以上是关于如何显示 Java SQLite3 数据库中存在的表名? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

SQLite 如何变成 内存数据库

如何在tableview中显示sqlite3中 的表中的信息

如果表中的行存在,如何转义当前的 SQLite3 查询,但如果不存在则继续

Linux下java访问sqlite3 数据库,如何访问?

如何在 Django 1.9 中删除 DB (sqlite3) 以从头开始?

在xcode中通过sqlite3检查存在