Navegador de base de datos SQLite con Android

Estoy confundido en cuanto a qué formatos de archivo son aceptables para SQLiteDatabase. Quiero utilizar mi base de datos pre-existente que he creado en el buscador de base de datos SQLite. Hay opciones de exportación a un archivo SQL, CSV y de texto. He intentado abrir el archivo como un archivo de texto y archivo SQL en Notepad ++, y todo lo que veo es un comando CREATE TABLE con INSERTS (que hice a través de SQLite Database Browser). ¿Es este el tipo de archivo incorrecto? ¿O SQLiteDatabase realmente utiliza esta información para crear la tabla? He utilizado estos archivos con el código que se ha hecho referencia desde 2009: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/, pero el código en ese enlace No está funcionando para mí. El archivo no se puede abrir para copiar, o se puede abrir, pero una vez que se intenta una consulta, obtengo un error diciendo que "nombre de tabla" no se puede encontrar esa tabla.

Código:

public class DatabaseHelper extends SQLiteOpenHelper { public final static int DB_VERSION = 1; public final static String DB_PATH = "/data/data/seattle.tourists/databases/"; public final static String DB_NAME = "attractioninfo"; Context myContext; public DatabaseHelper(Context context ) { super( context, DB_NAME, null, DB_VERSION ); myContext = context; } public void createDatabase() { boolean dbExists = databaseExists(); if ( !dbExists ) { this.getReadableDatabase(); try { copyDatabase(); } catch ( IOException e ) { System.out.println( "copy database error" ); } } } private boolean databaseExists() { SQLiteDatabase checkDB = null; try { String myPath = DB_PATH + DB_NAME; checkDB = SQLiteDatabase.openDatabase( myPath, null, SQLiteDatabase.OPEN_READONLY ); } catch ( SQLiteException e ) { System.out.println( "database does not exist" ); } return checkDB != null ? true : false; } private void copyDatabase() throws IOException { InputStream myInput = myContext.getAssets().open( DB_NAME ); String outFileName = DB_PATH + DB_NAME; OutputStream myOutput = new FileOutputStream( outFileName ); byte [] buffer = new byte[ 1024 ]; int length; while( ( length = myInput.read( buffer ) ) > 0 ) myOutput.write( buffer, 0, length ); myOutput.flush(); myOutput.close(); myInput.close(); } public SQLiteDatabase openDatabase() throws SQLException { // Open the database String myPath = DB_PATH + DB_NAME; if ( databaseExists() ) return SQLiteDatabase.openDatabase( myPath, null, SQLiteDatabase.NO_LOCALIZED_COLLATORS ); return null; } public synchronized void close() { super.close(); } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } } 

Archivo definitivamente allí

Btw, este es el contenido de mi archivo de base de datos.

 BEGIN TRANSACTION; CREATE TABLE ExtraInfo (commonName , hours , fare , website , summary ); INSERT INTO ExtraInfo VALUES('Alki Beach Park','4 am - 11:30 pm',-1,-1,'Enjoy the Seattle skyline, ride bikes, or fly kites at Alki Beach.'); INSERT INTO ExtraInfo VALUES('Bradner Gardens','4 am - 11:30 pm',-1,-1,'A 1.6-acre park in the Mt. Baker neighborhood of southeast Seattle. Enjoy a garden, p-patch, basketball court and more.'); INSERT INTO ExtraInfo VALUES('Experience Music Project','Hours vary by season. See website for details.','Range by age: $14 - $20',-1,'Experience music hands on! Explore music history and get creative in the interactive Sound Lab.'); INSERT INTO ExtraInfo VALUES('Japanese Garden','Hours vary by season. See website.','Varies. See website.','http://www.seattle.gov/parks/parkspaces/japanesegarden.htm','Located within the Washington Park Arboretum, this is a 3.5 acre formal garden designed and constructed under the supervision of world-renowned Japanese garden designer Juki Iida in 1960.'); INSERT INTO ExtraInfo VALUES('Katie Blacks Garden','4 am - 11:30 pm',-1,-1,'This historic landscape was originally created for Katie Black, an early Seattle settler. The community rallied to preserve it and has worked hard to remove blackberries and restore the garden.'); INSERT INTO ExtraInfo VALUES('Kubota Garden','6 am - 10 pm',-1,-1,'Hidden in South Seattle, Kubota Garden is a stunning 20 acre landscape that blends Japanese garden concepts with native Northwest plants.'); INSERT INTO ExtraInfo VALUES('Museum Of Flight','Daily 10 am - 5 pm.\nClosed Thanksgiving and Christmas.','Adults $17\nSeniors (65+) $14\nYouth(5-17) $9\nChildren (4 and under) Free','http://www.museumofflight.org/','A museum dedicated to the history of air and space flight. Collection includes 150+ historically significant air- and spacecraft.'); INSERT INTO ExtraInfo VALUES('Pacific Science Center','Daily 9:45 am - 6 pm','Exhibits Admission\nAdults(16-64) $16\nSeniors(65+) $14\nYouth(6-15) $11\nKids(3-5) $9',-1,'Explore science hands on through a variety of different exhibits such as "Dinosaurs: A Journey Through Time" or the "Science Playground".'); INSERT INTO ExtraInfo VALUES('Parsons Garden','6 am - 10 pm',-1,-1,'Formerly the family garden of Reginald H. Parsons, the park was given to the City in 1956 by the family''s children. Often used for ceremonies, this mall but lovely garden is a hidden gem on Queen Anne''s south slope.'); INSERT INTO ExtraInfo VALUES('Science Fiction Museum','Hours vary by season. See website for details.','Range by age: $14 - $20',-1,'Explore science fiction through film and literature at the Science Fiction Museum. Browse the exhibits'' large collection of film and TV props and memorabilia, as well as books.'); INSERT INTO ExtraInfo VALUES('Seattle Aquarium','Daily 9:30 am - 5 pm\nThanksgiving and Christmas Day 9:30 am - 3 pm\nChristmas Day Closed','Adults (13+) $19.95\nYouth(4-12) $13.95\nChild(3 & under) Free','http://www.seattleaquarium.org/','Come see a variety of cute and strange aquatic creatures!'); INSERT INTO ExtraInfo VALUES('Seattle Childrens Theatre',-1,-1,-1,'Seattle Children''s Theatre provides children of all ages access to professional theatre, with a focus on new works, and theatre education.'); INSERT INTO ExtraInfo VALUES('Volunteer Park Conservatory','6 am - 10 pm',-1,-1,'Located in the heart of Seattle, Volunteer Park is home to the Volunteer Park Conservatory, Seattle Asian Art Museum, Puget Sound and downtown views, and more.'); INSERT INTO ExtraInfo VALUES('Washington Park Arboretum','Dawn to Dusk',-1,-1,'Managed by the UW and City of Seattle, this 230 acre arboretum has a dynamic assortment of plants found nowhere else.'); INSERT INTO ExtraInfo VALUES('Woodland Park Zoo Rose Garden','4 am - 11:30 pm',-1,-1,'A multipurpose park and recreation space southwest of Green Lake and north of the Fremont district. Ideal for picnics (reservable), BBQs, sports and recreation.'); COMMIT; 

Es por eso que le pregunté por el formato de archivo. He abierto otros archivos sql, sqlite antes y lo que tengo es gibberish binario. Lo que tengo aquí es un simple comando CREATE TABLE.

Hice cambios en dos cosas. Utilizando el indicador CREATE_IF_NECESSARY para SQLite.openDatabase (…) y me di cuenta que tenía el formato de archivo equivocado. Yo estaba exportando a SQL o TXT en lugar de usar el archivo guardado cuando se utiliza el navegador de base de datos.

No está funcionando probablemente no ha dado el permiso en el archivo de manifiesto. Creo que el tutorial no lo menciona. Agregue esto a su archivo de manifiesto:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

¡Necesitas crear una clase de ayuda db class + db!

¿por qué? Para propósitos de desarrollo se puede usar el db dentro del emelutor, pero en un dispositivo (si no está enraizado) no se puede acceder a la carpeta de datos / datos

Simplemente cree una clase auxiliar. Entonces creará su db, lo administrará en la actualización, etc …

4 más inf: http://www.vogella.com/articles/AndroidSQLite/article.html

Editar: cualquier tipo de archivo es compatible porque linux utiliza bytes mágicos para determinar un tipo de archivo … cuando u guardar su db de SQLite Browser, guardar como name.db o simplemente nombre (no un volcado de sql)

  • Obtener actualizaciones de contar las filas de SQLite en Android mediante una consulta en bruto?
  • SQLiteConstraintException lanzada al intentar insertar
  • Cómo obtener el tamaño de la base de datos sqlite actual o el tamaño del paquete en Android?
  • La aplicación no cerró el cursor o el objeto de base de datos que se abrió aquí:
  • Error al leer la fila 0, columna 0 de una CursorWindow que tiene 0 filas, 64 columnas
  • Adb shell setprop log.tag.SQLiteStatements VERBOSE no hace nada?
  • Inspeccionar la base de datos android de sql desde Eclipse
  • Android Studios: Android Device Manager no muestra archivos para Nougat 7.0 en el Explorador de archivos
  • Android busca base de datos SQLite en el teléfono
  • ¿Cómo puedo insertar una comilla doble (") en el campo Varchar de la base de datos SQLite?
  • Sugar ORM en Android: actualiza un objeto guardado en SQLite
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.