2012-11-25 2 views
0

나는 응용 프로그램의 SQLite 데이터베이스를 CSV 파일로 내보내고 SD 카드에 저장하려고합니다. 내보내기 메서드는 DBAdapter 클래스에서 ExportToCSV로 정의되었습니다. 나는 그 앱이 SQLite 데이터베이스를 성공적으로 생성하는지 확인했다. 그러나 MainActivity에서 onPause 메서드를 사용하여 ExportToCSV를 호출하려고하면 응용 프로그램에서 데이터베이스를 내보낼 수 없습니다. 이 코드를 수정하는 방법에 대한 의견을 보내주십시오. 도와 주셔서 감사합니다! comments CSV로 안드로이드 Sqlite DB를 내보내기해야합니다

public void ExportToCSV(Cursor c, String fileName) {  
     int rowCount = 0; 
     int colCount = 0; 
     FileWriter fw; 
     BufferedWriter bfw; 
     File sdCardDir = Environment.getExternalStorageDirectory(); 
     File saveFile = new File(sdCardDir, fileName); 
     try { 
      rowCount = c.getCount(); 
      colCount = c.getColumnCount(); 
      fw = new FileWriter(saveFile); 
      bfw = new BufferedWriter(fw); 
      if (rowCount > 0) { 
       c.moveToFirst(); 
       // write the colume title 
       for (int i = 0; i < colCount; i++) { 
        if (i != colCount - 1) 
         bfw.write(c.getColumnName(i) + ','); 
        else 
         bfw.write(c.getColumnName(i)); 
       } 
       // change the line 
       bfw.newLine(); 
       // write data 
       for (int i = 0; i < rowCount; i++) { 
        c.moveToPosition(i); 
        Log.v("exporting data", "exportting" + (i + 1) + "line"); 
        for (int j = 0; j < colCount; j++) { 
         if (j != colCount - 1) 
          bfw.write(c.getString(j) + ','); 
         else 
          bfw.write(c.getString(j)); 
        } 
        // change line 
        bfw.newLine(); 
       } 
      } 

나는 ExportToCSV 전화 MainActivity.java에서 onPause를 사용하십시오 :

@Override 
protected void onPause() { 
    super.onPause(); 
    DBAdapter myDatabase=new DBAdapter(this); 
    myDatabase.open(); 
    Cursor c=myDatabase.getAllgpspoint(); 
// this method was defined in DBAdapter.java and returned a Cursor 
    myDatabase.ExportToCSV(c, "IRI.csv"); 
    myDatabase.close(); 
     mSensorManager.unregisterListener(this); 
    } 
+0

"내보내기에 응답 할 수 없음"이란 무엇을 의미합니까? 어떤 함수가 호출되지 않았습니까? 예외가 있습니까? –

+0

앱이 데이터를 계속 생성하지만 ExportToCSV가 작동하지 않는 것으로 보입니다. 내 HTC 상태에서 응용 프로그램을 실행하고, 그것은 "(응용 프로그램 데이터베이스에서) 활동 MainActivity 응답하지 않는 것을 보여 주었다." –

답변

0

당신은 마지막에 파일을 닫아야합니다 다음과 같이

내 코드입니다.

bfw.close(); 
관련 문제