2015-04-27 4 views
0

У меня есть приложение, которое хранит данные в базе данных. Теперь я хочу, чтобы кнопка экспортировала эту базу данных в текстовый файл.Android - Экспорт DB в текстовый файл

Вот код моего экспорта кнопки:

//BUTTON ACTION 
public void Save(View view) { 

    //Saving the data into the data base 
    SQLiteDatabase db = DataBase.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put("name", name.getText().toString()); 
    values.put("phone", phone.getText().toString()); 
    values.put("email", email.getText().toString()); 
    values.put("job", job.getText().toString()); 
    values.put("others", others.getText().toString()); 

    long result= db.insert("table_customer", null, values); 

    Cursor cursor = db.query ("table_customer", new String[]{"name", "phone", "email", "job", "others"}, null,null,null,null,null); 

     if (cursor.moveToFirst()) { 

      do { 
       HashMap<String, String> customer = new HashMap<String, String>(); 
       cliente.put("_id_customer", cursor.getString(cursor.getColumnIndex("_id_customer"))); 
       cliente.put("name", cursor.getString(cursor.getColumnIndex("name"))); 
       cliente.put("phone", cursor.getString(cursor.getColumnIndex("phone"))); 
       cliente.put("email", cursor.getString(cursor.getColumnIndex("email"))); 
       cliente.put("job", cursor.getString(cursor.getColumnIndex("job"))); 
       cliente.put("others", cursor.getString(cursor.getColumnIndex("others"))); 
      } 

      while (cursor.moveToNext()); 

     } 

     cursor.close(); 

    if (resultado != -1) { 
     Toast.makeText(this, "Customer saved and file exported", Toast.LENGTH_SHORT).show(); 
    } 
    else { 
     Toast.makeText(this, "Error 2", Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

Фиксированное форматирование кода и удаление ненужных частей из вопроса – Achrome

ответ

0

Вам нужно запросить базу данных, используя метод db объекта. Затем вам нужно будет повторить эти результаты и записать их в свой файл. Ознакомьтесь с методами, доступными для этого в документации SQLiteDatabase.

EDIT 1:

Попробуйте что-то вроде этого:

Cursor cursor = db.query ("table_customer", new String[]{"name","phone", "email", "job", "others"},null,null,null,null,null); 

//cursor is now at the first result returned by this query 
do{ 
    int colIdx = cursor.getColumnIndex("name"); 
    String name = cursor.getString(colIdx); 
    //do something with name 
}while(cursor.moveToNext()); //loop will terminate when all the rows are exhausted 

EDIT 2: Вот link to an article, который подробно описывает, как использовать функции запроса и управления курсором.

+0

Уважаемый Джейкоб. Спасибо за ваше время. Ну, извините, если я слишком много спрашиваю ... Наверное, я понял, что делать ... Но я не знаю, как это сделать ... Я действительно новичок в этом и считаю, что все мои усилия направлены на то, чтобы это произошло. Не могли бы вы написать какую-то демонстрацию? Большое спасибо! – Vhox

+0

Я думаю, что вы, вероятно, можете сделать что-то подобное. 'Курсор курсор = db.query (" table_customer ", новый String [] {" name "," phone "," email "," job "," others "}, null, null, null, null, null); // cursor теперь у первого результата, возвращаемого по этому запросу do { int colIdx = cursor.getColumnIndex ("name"); Строка name = cursor.getString (colIdx); // делать что-то с именем } while (cursor.moveToNext()); ' –

+0

Дорогой @Jacob, я думаю, что я вникаю во что-то, только из-за твоего терпения ... Ну ... Я загрузил свой код, потому что здесь больше нет места для написания ... Думаете ли вы, что это правильно? И как я пишу весь запрос внутри текстового файла? Спасибо снова и снова – Vhox

0

Что вы можете сделать, это поочередно запрашивать каждую таблицу с помощью запроса select all и для каждой таблицы использовать StringBuilder для ручной сборки файлов XML или CSV (значений, разделенных запятыми).

Например, если таблица Лица имели следующие colums {ID, Fname, LNAME, возраст}, то для таблицы, содержащей две строки данных, я мог бы произвести следующие действия для XML

<persons> 
    <person> 
    <ID>1</ID> 
    <FNAME>Isaac</FNAME> 
    <LNAME>Meacock</LNAME> 
    <AGE>27</AGE> 
    </person> 
    <person> 
    <ID>2</ID> 
    <FNAMENorah</FNAME> 
    <LNAME>Bone</LNAME> 
    <AGE>52</AGE> 
    </person> 
<persons> 

Или следующее для CSV

1, Isaac, Meacock, 27 
2, Norah, Bone, 53 

Тогда это просто вопрос сохранения стандартных текстовых файлов на Java.

Смежные вопросы