Только один столбец данных вставлен в базу данных sqlite - PullRequest
0 голосов
/ 04 декабря 2018

Итак, я использую несколько radiogroup и EditText для вставки данных в базу данных.Проблема в том, что вставляется только один столбец данных, и это всегда столбец collection_time.

Это код для вставки данных:

    BtnNext1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
   Intent intent = new Intent(SelectPrintingDetails.this, Summary.class);

                    int selectedId = rgCP.getCheckedRadioButtonId();
                    if(selectedId != -1)
                    {
                        RadioButton selectedRadioButton = (RadioButton) findViewById(selectedId);
                        String rbCP = selectedRadioButton.getText().toString();
                        Boolean insertPD = db.insertcolor(rbCP);
                        if(insertPD == true)
                        {
                            intent.putExtra("Color", rbCP);
                        }
                        else
                        {
                            Toast.makeText(getApplicationContext(), "Data is not inserted",Toast.LENGTH_SHORT).show();
                        }

                    }
                    else
                    {
                        Toast.makeText(getApplicationContext(), "Radiobutton is not selected",Toast.LENGTH_SHORT).show();
                    }

                    int selectedId1 = rgFP.getCheckedRadioButtonId();
                    if(selectedId1 != -1)
                    {
                        RadioButton selectedRadioButton = (RadioButton) findViewById(selectedId1);
                        String rbFP = selectedRadioButton.getText().toString();
                        Boolean insertPD1 = db.insertflip(rbFP);
                        if(insertPD1 == true)
                        {
                            intent.putExtra("Flip", rbFP);
                        }
                        else
                        {
                            Toast.makeText(getApplicationContext(), "Data is not inserted",Toast.LENGTH_SHORT).show();
                        }

                    }
                    else
                    {
                        Toast.makeText(getApplicationContext(), "Radiobutton is not selected",Toast.LENGTH_SHORT).show();
                    }

                    int selectedId2 = rgPC.getCheckedRadioButtonId();
                    if(selectedId1 != -1)
                    {
                        RadioButton selectedRadioButton = (RadioButton) findViewById(selectedId2);
                        String rbPC = selectedRadioButton.getText().toString();
                        Boolean insertPD2 = db.insertpc(rbPC);
                        if(insertPD2 == true)
                        {
                            intent.putExtra("Plastic", rbPC);
                        }
                        else
                        {
                            Toast.makeText(getApplicationContext(), "Data is not inserted",Toast.LENGTH_SHORT).show();
                        }

                    }
                    else
                    {
                        Toast.makeText(getApplicationContext(), "Radiobutton is not selected",Toast.LENGTH_SHORT).show();
                    }

                    int selectedId3 = rgBind.getCheckedRadioButtonId();
                    if(selectedId1 != -1)
                    {
                        RadioButton selectedRadioButton = (RadioButton) findViewById(selectedId3);
                        String rbBind = selectedRadioButton.getText().toString();
                        Boolean insertPD3 = db.insertbind(rbBind);
                        if(insertPD3 == true)
                        {
                            intent.putExtra("Bind", rbBind);
                        }
                        else
                        {
                            Toast.makeText(getApplicationContext(), "Data is not inserted",Toast.LENGTH_SHORT).show();
                        }

                    }
                    else
                    {
                        Toast.makeText(getApplicationContext(), "Radiobutton is not selected",Toast.LENGTH_SHORT).show();
                    }



                    String timecollect = etCT.getText().toString();
                    Boolean insertPD4 = db.insertct(timecollect);
                    if(insertPD4 == true)
                    {
                        intent.putExtra("Collect", timecollect);
                    }
                    else
                    {
                        Toast.makeText(getApplicationContext(), "Data is not inserted",Toast.LENGTH_SHORT).show();
                    }


                    startActivity(intent);
                }
            });

Это помощник базы данных:

public class DatabaseHelper extends SQLiteOpenHelper {
    public DatabaseHelper(Context context) {
        super(context, "hdatabase1.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {


        db.execSQL("Create table printingdetails (color text, binding text, collection_time text, flipped_page text, plastic_cover text)");


    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {


        db.execSQL("drop table if exists printingdetails");
    }


    public boolean insertcolor(String color)
        {
            SQLiteDatabase db = this.getWritableDatabase();
            ContentValues contentValues = new ContentValues();
            contentValues.put("color", color);

            long ins = db.insert("printingdetails", null, contentValues);
            if(ins==-1) return false;
            else return true;

        }

        public boolean insertflip(String flipped_page)
        {
            SQLiteDatabase db = this.getWritableDatabase();
            ContentValues contentValues = new ContentValues();
            contentValues.put("flipped_page", flipped_page);

            long ins = db.insert("printingdetails", null, contentValues);
            if(ins==-1) return false;
            else return true;

        }

        public boolean insertpc(String plastic_cover)
        {
            SQLiteDatabase db = this.getWritableDatabase();
            ContentValues contentValues = new ContentValues();
            contentValues.put("plastic_cover", plastic_cover);

            long ins = db.insert("printingdetails", null, contentValues);
            if(ins==-1) return false;
            else return true;

        }

        public boolean insertbind(String binding)
        {
            SQLiteDatabase db = this.getWritableDatabase();
            ContentValues contentValues = new ContentValues();
            contentValues.put("binding", binding);

            long ins = db.insert("printingdetails", null, contentValues);
            if(ins==-1) return false;
            else return true;

        }

        public boolean insertct (String collection_time)
        {
            SQLiteDatabase db = this.getWritableDatabase();
            ContentValues contentValues = new ContentValues();
            contentValues.put("collection_time", collection_time);

            long ins = db.insert("printingdetails", null, contentValues);
            if(ins==-1) return false;
            else return true;

        }

Надеюсь, вы, ребята, подскажете мне, как вставить все данныев каждом столбце.Я все еще новичок, и я уже ссылался на несколько связанных постов, и ни один из них не помог

1 Ответ

0 голосов
/ 04 декабря 2018

В настоящее время вы, похоже, вставляете значение каждого столбца отдельно.Это означает, что вместо одной строки вы получите несколько строк, в которых только один столбец имеет значение, а остальные пустые.

Чтобы исправить это, вам нужен единственный метод, который выглядит примерно так:

public boolean insertRow(String color, String binding, String time, String flipped_page, String plastic_cover) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put("color", color);
    contentValues.put("binding", binding);
    contentValues.put("collection_time", time);
    contentValues.put("flipped_page", flipped_page);
    contentValues.put("plastic_cover", plastic_cover);

    long ins = db.insert("printingdetails", null, contentValues);
    if(ins==-1) return false;
    else return true;
}

Каждая отдельная команда вставки должна быть удалена.Теперь ваш метод onClick должен извлечь все выбранные элементы и затем вызвать этот метод вставки.Обработка невыбранных радиогрупп будет зависеть от вашего приложения.В приведенном ниже примере я просто прерываю метод, тем самым отменяя отправку.Если некоторые радиогруппы являются необязательными, вы можете установить соответствующие строки пустыми ("") и продолжить с методом, а не отменять отправку, возвращая.

public void onClick(View v) {

    Intent intent = new Intent(SelectPrintingDetails.this, Summary.class);
    String color, binding, time, page, cover;

    int selectedId = rgCP.getCheckedRadioButtonId();
    if(selectedId != -1)
    {
        RadioButton selectedRadioButton = (RadioButton) findViewById(selectedId);
        color = selectedRadioButton.getText().toString();    
    }
    else
    {
        Toast.makeText(getApplicationContext(), "Color is not selected",Toast.LENGTH_SHORT).show();
        return; // this prevents the rest of the code from executing
    }

    int selectedId1 = rgFP.getCheckedRadioButtonId();
    if(selectedId1 != -1)
    {
        RadioButton selectedRadioButton = (RadioButton) findViewById(selectedId1);
        page = selectedRadioButton.getText().toString();
    }
    else
    {
        Toast.makeText(getApplicationContext(), "FlipPage is not selected",Toast.LENGTH_SHORT).show();
        return;
    }

    int selectedId2 = rgPC.getCheckedRadioButtonId();
    if(selectedId2 != -1)
    {
        RadioButton selectedRadioButton = (RadioButton) findViewById(selectedId2);
        cover = selectedRadioButton.getText().toString();
    }
    else
    {
        Toast.makeText(getApplicationContext(), "Plastic Cover is not selected",Toast.LENGTH_SHORT).show();
        return;
    }

    int selectedId3 = rgBind.getCheckedRadioButtonId();
    if(selectedId3 != -1)
    {
        RadioButton selectedRadioButton = (RadioButton) findViewById(selectedId3);
        binding = selectedRadioButton.getText().toString();
    }
    else
    {
        Toast.makeText(getApplicationContext(), "Binding is not selected",Toast.LENGTH_SHORT).show();
        return;
    }

    time = etCT.getText().toString();

    // since all attributed have been read, now we call insert
    // you can read the returned boolean to determine if the insertion was successful
    db.insertRow(color, binding, time, page, cover);

    // Also add all of them as intent extras
    intent.putExtra("Color", color);
    intent.putExtra("Bind", binding);
    intent.putExtra("Collect", time);
    intent.putExtra("Flip", page);
    intent.putExtra("Plastic", cover);

    startActivity(intent);
}

Надеюсь, это поможет вам понять, гдевы шли не так, и как вы можете сделать это вперед.

...