Myślę, że stworzyłem bazę danych sqllite z Androidem, ale za każdym razem, gdy robię wstawkę, twierdzi ona, że kolumna nie istnieje. Jak mogę wyświetlić schemat i czy metoda onCreate jest wywoływana przy tworzeniu obiektu?Schemat bazy danych Android Sqlite
Odpowiedz
Możesz to zrobić za pomocą kodu. Sqlite ma tabelę o nazwie "sqlite_master", która przechowuje informacje o schemacie.
/**
* Get all table Details from the sqlite_master table in Db.
*
* @return An ArrayList of table details.
*/
public ArrayList<String[]> getDbTableDetails() {
Cursor c = db.rawQuery(
"SELECT name FROM sqlite_master WHERE type='table'", null);
ArrayList<String[]> result = new ArrayList<String[]>();
int i = 0;
result.add(c.getColumnNames());
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
String[] temp = new String[c.getColumnCount()];
for (i = 0; i < temp.length; i++) {
temp[i] = c.getString(i);
}
result.add(temp);
}
return result;
}
Najprostszym sposobem jest uruchomienie go na emulatorze.
- otwarte DDMS perspektywiczne
- Znajdź data/data/packageName/database/twój_plik
- Kliknij ściąganie z przycisku db w prawym górnym rogu pokazany na rysunku.
Otwarte
Innym sposobem na zbadanie schemat bazy danych jest adb shell
do urządzenia (lub emulator). Uruchom wiersz poleceń sqlite za pomocą: sqlite3 <path to your database>
i wpisz .schema
w wierszu polecenia.
Z jakiegoś powodu z uruchomionym "sqlite3" dostałem komunikat "/ system/bin/sh: sqlite3: not found", ale udało mi się znaleźć program w folderze przeglądarki root (który kupiłem i zainstalowałem) wykonując polecenie "find | grep sqlite3 "(po uruchomieniu" su "- co mogę zrobić, ponieważ mój telefon jest zrootowany) –
Wierzę, że sqlite3 jest niedostępny na urządzeniu, to tylko na emulatorze. –
można uzyskać nazwy tabeli w następujący sposób:
/**
* Get all table Details from the sqlite_master table in Db.
*
* SQlite has a table called "sqlite_master " which holds schema information.
*
* @return An ArrayList of table names.
*/
public ArrayList<String> getDbTableNames(SQLiteDatabase db) {
ArrayList<String> result = new ArrayList<String>();
Cursor c = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
if (c.moveToFirst()) {
while (!c.isAfterLast()) {
result.add(c.getString(c.getColumnIndex("name")));
c.moveToNext();
}
}
return result;
}
- 1. Android: zamykanie bazy danych SQLite
- 2. Testowanie bazy danych SQLite Android
- 3. Schemat bazy danych ankiety
- 4. Schemat bazy danych MySQL
- 5. Schemat bazy danych EtherPad?
- 6. Zapełnianie Spinner z bazy danych SQLite Android
- 7. Android: SQLite używającej niewłaściwej bazy danych
- 8. Opróżnij schemat relacyjnej bazy danych
- 9. Mongoose: Sugerowany schemat bazy danych
- 10. Schemat bazy danych podobnego systemu
- 11. Schemat bazy danych do przechowywania danych SNMP
- 12. połączenie bazy danych sqlite golang
- 13. Maksymalna pojemność bazy danych SQLite
- 14. Budowanie bazy danych sqlite poza projektem Androida?
- 15. bazy danych sqlite w języku perskim
- 16. SQLite - nie można otworzyć pliku bazy danych
- 17. Jak przetestować schemat bazy danych django?
- 18. Schemat bazy danych dla atrybutów produktów
- 19. Przykładowy schemat bazy danych dla Oracle
- 20. Używanie bazy danych SQLite w Libgdx
- 21. Powody korzystania czytelny bazy danych SQLite
- 22. Eksport bazy danych SQLite do pliku XML w systemie Android
- 23. Dostęp do bazy danych sqlite na urządzeniu z systemem Android
- 24. Kilka pytań o SQLite kursorów bazy danych w Android
- 25. Odzyskaj dużą plamę z bazy danych Android sqlite
- 26. Jak użyć skryptu do zapytania bazy danych sqlite Android
- 27. Dlaczego warto korzystać z bazy danych sqlite w systemie Android?
- 28. Android szyfrowanie/odszyfrowywanie bazy danych sqlite w 100% bezpieczne
- 29. Jak skopiować tabelę sqlite z bazy danych dysku do bazy danych pamięci w pythonie?
- 30. Zmiana nazwy systemu Android Baza danych SQLite
Dzięki za odpowiedź, chciałbym spróbować i zobaczyć za pomocą emulatora. Jak to zrobić? – Paul
Dzięki za pomoc, która wygląda świetnie. – Paul
@Paul zaktualizował odpowiedź ze zdjęciem. – wtsang02