Как скопировать данные из CSV-файла в sqlite android - PullRequest
0 голосов
/ 15 апреля 2020

Я новичок в разработке приложений с использованием Android Studio. В настоящее время я хочу сохранить все свои данные из CSV-файла в SQLiteDatabase через android. Итак, что я ожидал, так это скопировать все данные из файла .csv в базу данных по умолчанию (если данные еще не существуют в БД). По умолчанию я хочу скопировать данные без предварительного импорта файла. Итак, когда приложение установлено, оно автоматически скопирует данные из CSV-файла в базу данных SQLite в android.

Я попробовал некоторый код здесь:

SQLiteOpenHelper helper;
SQLiteDatabase db;

    helper = new DatabaseHelper(this);
    db = helper.getWritableDatabase();

    String mCSVfile = "food.csv";
    AssetManager manager = getAssets();
    InputStream inStream = null;
    try {
        inStream = manager.open(mCSVfile);
    } catch (IOException e) {
        e.printStackTrace();
        Toast.makeText(getApplicationContext(), "Error 1", Toast.LENGTH_SHORT).show();
    }



    BufferedReader buffer = new BufferedReader(new InputStreamReader(inStream));
    String line = "";
    String tableName = DatabaseHelper.FOOD;
    String columns = "food_name, food_category, food_serving, food_serving_size, food_calorie, food_carbs, food_protein, food_fat";
    String str1 = "INSERT INTO " + tableName + " (" + columns + ") values(";
    String str2 = ")";
    String str3 = ";";

    db.beginTransaction();
    while (true) {
        try {
            if (!((line = buffer.readLine()) != null)) break;
        } catch (IOException e) {
            e.printStackTrace();
            Toast.makeText(getApplicationContext(), "Error 2", Toast.LENGTH_SHORT).show();
            break;
        }
        StringBuilder sb = new StringBuilder(str1);
        String[] str = line.split(",");

        sb.append("'" + str[0] + "',");
        sb.append("'" + str[1] + "',");
        sb.append("'" + str[2] + "',");
        sb.append(str[3] + ",");
        sb.append(str[4] + ",");
        sb.append(str[5] + ",");
        sb.append(str[6] + ",");
        sb.append(str[7] + "");
        sb.append(str2);
        db.execSQL(sb.toString());
        sb.append(str3);


    }

    db.setTransactionSuccessful();
    db.endTransaction();

Я поместил этот код в onCreate на основной деятельности. И уже поместите CSV-файл в папку Assets. Тем не менее, похоже, что есть ошибка на AssetManager.

Кто-нибудь может мне помочь с этим? Я пытался ссылаться на учебник здесь и там, но кажется, что я пока не могу найти никакого решения Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...