2011-12-29 30 views
5

私はデータベースを使用していて、そのデータベースファイルを.db extention with sdcardに格納しているアプリケーションを開発しています。今、この "dbファイルを.csv"に変換したいのでユーザーはその.csvファイルを開くことができ、すべてのデータを簡単に見ることができます。データベース.dbファイルを.csvに変換する

答えて

9

私は自分自身の質問の答えを得ました:ライブラリOpenCSVをダウンロードし、アプリケーションにopencsv.jarファイルを追加しました。次のコード:

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

毎月新しいレコードに入れるレコードは.csvまたはExcelです。例えば「コラムA」には1月のレコードがあり、「コラムB」には2月のレコードがあります..... – Pritesh

関連する問題