2011-12-29 5 views
5

Je développe une application dans laquelle j'utilise la base de données et le stockage de ce fichier de base de données avec l'extension .db dans sdcard .. Maintenant, je veux convertir ce "fichier db en .csv", que l'utilisateur peut ouvrir ce fichier .csv et peut facilement voir toutes ses données ...Convertir le fichier de base de données .db en .csv

Répondre

9

Hey j'ai eu la réponse à ma propre question: J'ai téléchargé une bibliothèque OpenCSV et ajouté le fichier opencsv.jar dans mon application et le code ci-dessous:

class ExportDatabaseCSVTask extends AsyncTask<String, Void, Boolean>{ 
    private final ProgressDialog dialog = new ProgressDialog(MyDatabaseActivity.this); 

    // can use UI thread here 
    @Override 
    protected void onPreExecute(){ 
     this.dialog.setMessage("Exporting database..."); 
     this.dialog.show(); 
    } 


    // automatically done on worker thread (separate from UI thread) 
    protected Boolean doInBackground(final String... args){ 
     File dbFile=getDatabasePath("mydb.db"); 
     // DbClass DBob = new DbClass(MyDatabaseActivity.this); 
     File exportDir = new File(Environment.getExternalStorageDirectory(), ""); 
     if (!exportDir.exists()) { 
      exportDir.mkdirs(); 
     } 
     File file = new File(exportDir, "excerDB.csv"); 
     try { 
      file.createNewFile(); 
      CSVWriter csvWrite = new CSVWriter(new FileWriter(file)); 
      //SQLiteDatabase db = DBob.getReadableDatabase(); 
      Cursor curCSV=mydb.rawQuery("select * from " + TableName_ans,null); 
      // Cursor curCSV = db.rawQuery("SELECT * FROM table_ans12",null); 
      csvWrite.writeNext(curCSV.getColumnNames()); 

      while(curCSV.moveToNext()){ 
       String arrStr[] ={curCSV.getString(0),curCSV.getString(1)}; 
        /*curCSV.getString(2),curCSV.getString(3),curCSV.getString(4)*/ 
       csvWrite.writeNext(arrStr); 
      } 

      csvWrite.close(); 
      curCSV.close(); 
      return true; 

     } catch(SQLException sqlEx) { 
      Log.e("MainActivity", sqlEx.getMessage(), sqlEx); 
      return false; 
     } catch (IOException e) { 
      Log.e("MainActivity", e.getMessage(), e); 
      return false; 
     } 
    } 

    // can use UI thread here 
    @Override 
    protected void onPostExecute(final Boolean success) { 
     if (this.dialog.isShowing()) { 
      this.dialog.dismiss(); 
     } 
     if (success) { 
      Toast.makeText(MyDatabaseActivity.this, "Export successful!", Toast.LENGTH_SHORT).show(); 
     } else { 
      Toast.makeText(MyDatabaseActivity.this, "Export failed", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 
+0

comment pourrait mettre chaque mois les enregistrements dans la nouvelle colonne est .csv ou excel. par exemple. dans la colonne A, il y a des enregistrements du mois de janvier et dans la colonne B il y a des enregistrements de février ... – Pritesh

Questions connexes