Android将sqlite单个记录转换为csv

时间:2014-01-08 06:03:36

标签: android sqlite export-to-csv

我想将单行转换为.csv文件。我该怎么做?我在互联网上看到的大多数是整个sqlite数据库被转换/导出到.csv文件。但我的要求只是一个记录?你有关于我将如何实现这一目标的想法吗?非常感谢帮助。谢谢!

更新

public class CSVCreationActivity extends Activity {
TextView empidtxt,empnametxt,empsaltxt;
EditText empidet,empnameet,empsalet;
Button insetbt,viewbt;
SQLiteDatabase myDatabase=null;
String DataBase_Name="employeedata";
String Table_Name="employeedetails";
Cursor c1,c2;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

empidtxt=(TextView)findViewById(R.id.tv1);
empnametxt=(TextView)findViewById(R.id.tv2);
empsaltxt=(TextView)findViewById(R.id.tv3);

empidet=(EditText)findViewById(R.id.et1);
empnameet=(EditText)findViewById(R.id.et2);
empsalet=(EditText)findViewById(R.id.et3);

insetbt=(Button)findViewById(R.id.bt1);
viewbt=(Button)findViewById(R.id.bt2);

try {
    myDatabase=this.openOrCreateDatabase(DataBase_Name, MODE_PRIVATE, null);
    System.out.println("databse has been created.....");
    myDatabase.execSQL("create table if not exists " + Table_Name + "(empid integer(10),empname varchar(50),empsal integer(10))");
    System.out.println("table has been created.....");
    c1 = myDatabase.rawQuery("select * from " + Table_Name, null);
    c1.moveToFirst();
    int count1 = c1.getCount();
    System.out.println("columns --->" + count1);
    if (count1 == 0) {
        myDatabase.execSQL("insert into "+Table_Name+ "(empid,empname,empsal)" +"values(101,'asha',20000)");
        System.out.println("data base has been inserted.....");
    }

    c2 = myDatabase.rawQuery("select * from " + Table_Name, null);
    c2.moveToFirst();
    int count2 = c2.getCount();
    System.out.println("columns --->" + count2);
    final int column1 = c2.getColumnIndex("empid");
    final int column2 = c2.getColumnIndex("empname");
    final int column3 = c2.getColumnIndex("empsal");

    insetbt.setOnClickListener(new View.OnClickListener() {             
        @Override
        public void onClick(View v) {
            if (c2 != null) {
                do {
                    int id = c2.getInt(column1);
                    String name = c2.getString(column2);
                    int salary = c2.getInt(column3);

                    System.out.println("empID --> "+id);
                    System.out.println("empNAME --> "+name);
                    System.out.println("empsalalry --> "+salary);
                } while(c2.moveToNext());
            }                                   
        }
    });

    viewbt.setOnClickListener(new View.OnClickListener() {              
        @Override
        public void onClick(View v) {
            try {
                new ExportDatabaseCSVTask().execute("");
            } catch(Exception ex) {
                Log.e("Error in MainActivity",ex.toString());
            }
        }
    });
}
catch(SQLException ex) { ex.printStackTrace(); }
/*finally {
    if (myDB != null) { myDB.close(); }
}*/
}


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

@Override
protected void onPreExecute() {
    this.dialog.setMessage("Exporting database...");
    this.dialog.show();
}

protected Boolean doInBackground(final String... args) {
    File dbFile = getDatabasePath("myDatabase.db");
    System.out.println(dbFile);  // displays the data base path in your logcat 
     File exportDir = new File(Environment.getExternalStorageDirectory(), "");

    if (!exportDir.exists()) { exportDir.mkdirs(); }

    File file = new File(exportDir, "myfile.csv");
    try {
        file.createNewFile();
        CSVWriter csvWrite = new CSVWriter(new FileWriter(file));
        Cursor curCSV = myDatabase.rawQuery("select * from " + Table_Name,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;
    }
}

protected void onPostExecute(final Boolean success) {
    if (this.dialog.isShowing()) { this.dialog.dismiss(); }
    if (success) {
        Toast.makeText(CSVCreationActivity.this, "Export successful!", Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(CSVCreationActivity.this, "Export failed", Toast.LENGTH_SHORT).show();
    }
}
}

CSVWriter和CSVReader可以下载here

1 个答案:

答案 0 :(得分:1)

从数据库获取特定记录然后将其转换为csv文件的更好方法...

您只需修改查询即可实现此目标

替换此行

 Cursor curCSV = myDatabase.rawQuery("select * from " + Table_Name,null);

使用ur条件查询意味着使用where运算符或其他任何内容...