2017-07-11 2 views
-1

Ich weiß nicht, wo die Select-Abfrage einfügen. Ich importiere eine externe Datenbank (Sqlite Browser) in mein Projekt und weiß nicht, wie ich die Daten von meiner Datenbank zur Listenansicht anzeigen kann.So zeigen Sie meine Daten aus meiner eigenen Datenbank in Android

public class DatabaseHelper extends SQLiteOpenHelper { 

    String DB_PATH = null; 
    public static String DB_NAME = "extenalDBS"; 
    private SQLiteDatabase myDataBase; 
    private final Context myContext; 


    public DatabaseHelper(Context context) { 
     super(context, DB_NAME, null, 1); 
     this.myContext = context; 
     this.DB_PATH = "/data/data/" + context.getPackageName() + "/" + "databases/"; 
     Log.e("Path 1", DB_PATH); 
    } 


    public void createDataBase() throws IOException { 
     boolean dbExist = checkDataBase(); 
     if (dbExist) { 
     } else { 
      this.getReadableDatabase(); 
      try { 
       copyDataBase(); 
      } catch (IOException e) { 
       throw new Error("Error copying database"); 
      } 
     } 
    } 

    public boolean checkDataBase() { 
     SQLiteDatabase checkDB = null; 
     try { 
      String myPath = DB_PATH + DB_NAME; 
      checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); 
     } catch (SQLiteException e) { 
     } 
     if (checkDB != null) { 
      checkDB.close(); 
     } 
     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[1]; 
     int length; 
     while ((length = myInput.read(buffer)) > 0) { 
      myOutput.write(buffer, 0, length); 
     } 
     myOutput.flush(); 
     myOutput.close(); 
     myInput.close(); 

    } 

    public void openDataBase() throws SQLException { 
     String myPath = DB_PATH + DB_NAME; 
     myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); 

    } 

    @Override 
    public synchronized void close() { 
     if (myDataBase != null) 
      myDataBase.close(); 
     super.close(); 
    } 


    @Override 
    public void onCreate(SQLiteDatabase db) { 
    } 


    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     if (newVersion > oldVersion) 
      try { 
       copyDataBase(); 
      } catch (IOException e) { 
       e.printStackTrace(); 

      } 
    } 

    public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) { 
     return myDataBase.query("wordbank", null, null, null, null, null, null); 
    } 



} 

Antwort

0

Setzen Sie diese in Ihrer Datenbank Hilfsklasse

Cursor getDatafromDB(){ return getWritableDatabase().rawQuery("SELECT 
* FROM TABLE_NAME",null);} 

Und es in Java-Klasse

List<Bean> list = new ArrayList<>(); 
Bean bean; 
Cursor cursor = databaseHelperInstance.getDatafromDB(); 
if(cursor.moveToFirst()) 
{ 
do{ 
    bean = new Bean(); 
    String a = cursor.getString(0); 
    String b = cursor.getString(1); 
    String c = cursor.getString(2); 
    String b = cursor.getString(3); 

    bean.setA(a); 
    bean.setA(b); 
    bean.setA(c); 
    bean.setA(d); 

    list.add(bean); 

    }while(cursor.moveToNext()); 
} 

diese Liste zu lesen, für die benutzerdefinierten Adapter Ihrer Listenansicht bereiten.

+0

Können Sie es mir erklären, ich meine den Prozess dieses Codes? Bitte ? –

+0

Wir machen eine Methode in der DBhelper-Klasse des Rückgabetyp-Cursors, der die Tabellendaten enthält. Am Empfangsende machen wir einen Cursor und rufen diese Methode auf. Jetzt prüfen wir, ob der Cursor einen Startpunkt hat, wenn ja, dann folgen wir der Schleife, bis der Cursor nächste Züge bedeutet, nächste Werte oder genauere Tabellenzeilen aus der DB. Diese Nummern sind nur die Spalte Nr. –

+0

Vielen Dank :), jetzt werde ich es testen –

Verwandte Themen