Как перечислить имена таблиц в базе данных Sqlite3 на Java - PullRequest
0 голосов
/ 06 июня 2018

Я использую базу данных sqlite3 в Java-приложении.Как программно получить имена всех таблиц в базе данных?Я попробовал Google и StackOverflow, а также не смог найти простое решение пока.Вот код MySqli, который я использую с PHP, я пытаюсь подобный подход в Java-Sqlite3

mysqli_select_db($conn, $database);
$res = mysqli_query($conn, "SHOW TABLES FROM " . $database . "");
while($cRow = mysqli_fetch_array($res, MYSQL_NUM)) {

    $namm=$cRow[0];


    $query = "SELECT COUNT(*) FROM " . $namm . "";
    $result = mysqli_query($conn,$query);
    $rows = mysqli_fetch_row($result);
    $namk = $rows[0];

    echo "<li type='square' style='margin-bottom:3px;'>" . $cRow[0] . " (" . $namk . ")</li>";
}
mysqli_close($conn);

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Вы можете использовать встроенные API JDBC для исследования метаданных базы данных:

try (Connection conn = DriverManager.getConnection("jdbc:sqlite:sample.db");
     ResultSet rs = conn.getMetaData().getTables(null, null, null, null)) {
    while (rs.next()) {
        System.out.println(rs.getString("TABLE_NAME"));
    }
}
0 голосов
/ 06 июня 2018
ArrayList<String> tableNames = new ArrayList<String>();

SqlHelper sqlHelper = new SqlHelper(this, "MYSQLITE.db", null, 1);
SQLiteDatabase sqliteDatabase = sqlHelper.getWritableDatabase();
Cursor cursor = sqliteDatabase.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
while(cursor.moveToNext()){
   String tableName = cursor.getString(0);
   if(tableName.equals("android_metadata")){     
     continue;
   }else{
      tableNames.add(tableName);
   }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...