Данные не добавляются в базу данных SQLITE - PullRequest
0 голосов
/ 25 октября 2019

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

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

открытый класс DatabaseHelper extends SQLiteOpenHelper {

public static final String DATABASE_NAME = "Channels.db" ;
public static final String TABLE_NAME = "Channels_table" ;
public static final String COL_1 = "Channel_number" ;
public static final String COL_2 = "Channel_name" ;


public DatabaseHelper(Context context){
    super(context, DATABASE_NAME , null , 1);

}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table " + TABLE_NAME + " (Channel_number INTEGER PRIMARY KEY , Channel_name TEXT )");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(db);
}

public boolean insertData(int c_number , String c_name){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL_1 , c_number);
    contentValues.put(COL_2 , c_name);

    long result = db.insert(TABLE_NAME , null , contentValues);

    if (result == -1){
        return false;
    }
    else
        return true;
}

открытый класс Add_Activity расширяет AppCompatActivity {

DatabaseHelper db;

EditText channel_name , channel_number ;
Button Add_button;

protected void onCreate (Bundle savedInstanceBundle) {
    super.onCreate(savedInstanceBundle);
    setContentView(R.layout.add_view);

    channel_name = findViewById(R.id.channel_name_textview);
    channel_number = findViewById(R.id.channel_number_textview);
    Add_button = (Button) findViewById(R.id.add_button);

    db = new DatabaseHelper(this);

    Button_tapped();

}

public void Button_tapped(){
    Add_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(channel_name.getText().toString().isEmpty() || channel_number.getText().toString().isEmpty()){
                Toast.makeText(Add_Activity.this , getText(R.string.empty_fields) , Toast.LENGTH_LONG).show();
            }
            else if (Integer.parseInt(channel_number.getText().toString()) < 0 || Integer.parseInt(channel_number.getText().toString()) > 84){
                Toast.makeText(Add_Activity.this , getText(R.string.invalid_channel_numb) , Toast.LENGTH_LONG).show();
                channel_number.setText("");
            }
            else {
                boolean insertdata = db.insertData(Integer.parseInt(channel_number.getText().toString()) , channel_name.getText().toString());

                if (insertdata){
                    Toast.makeText(Add_Activity.this , getText(R.string.successfull_insertion) , Toast.LENGTH_LONG).show();
                }
                else
                    Toast.makeText(Add_Activity.this , getText(R.string.unsuccessfull_insertion) , Toast.LENGTH_LONG).show();

                channel_number.setText("");
                channel_name.setText("");
            }
        }
    });
}

}

Когда я нажимаю кнопку, я получаю тост за неудачную вставку, а данные не вставляются в базу данных. Что мне нужно, так это уметь видеть тост успешной вставки и находить данные в базе данных.

1 Ответ

0 голосов
/ 25 октября 2019

Попробуйте это

  db.execSQL("CREATE TABLE " + TABLE_NAME + " ( " + COL_1 + " INTEGER PRIMARY KEY, " + COL_2 + " TEXT )");

вместо

db.execSQL("create table " + TABLE_NAME + " (Channel_number INTEGER PRIMARY KEY , Channel_name TEXT )");
...