Как вставить значения в базу данных и проверить

В моем приложении у меня есть 2 EditText и кнопка.

При нажатии на кнопку Я хочу получить значения из EditText и вставить его в SQLite Databse

Но мой код не работает, и моя база данных не создается.

MainActivity.Ява :

public class MainActivity extends AppCompatActivity {
EditText editText1,editText2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    editText1 = (EditText) findViewById(R.id.editText);
    editText2 = (EditText) findViewById(R.id.editText2);
    findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String name = editText1.getText().toString();
            String family = editText2.getText().toString();

        }
    });

}

И Человек.Ява :

public class Person {

private long id;
private String name;
private String family;

public Person() {
}

public Person(String name, String family) {
    this.name = name;
    this.family = family;
}

public Person(long id, String name, String family) {
    this.id = id;
    this.name = name;
    this.family = family;
}

public long getId() {
    return id;
}

public void setId(long id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getFamily() {
    return family;
}

public void setFamily(String family) {
    this.family = family;
}

И PersonDatabaseAdapter :

public class PersonDatabaseAdapter {

private Context context;
private SQLiteOpenHelper sqLiteOpenHelper;

public PersonDatabaseAdapter(Context context) {
    this.context = context;
    sqLiteOpenHelper = new SQLiteOpenHelper(context, "database.db", null, 1) {

        @Override
        public void onCreate(SQLiteDatabase db) {
            String sql = "create table tbl_persons (id integer primary key, name text, family text)";
            db.execSQL(sql);
        }

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

        }
    };
}

public long savePerson(Person person) {
    String name = person.getName();
    String family = person.getFamily();
    long id = -1;

    SQLiteDatabase database = null;

    try {
        ContentValues values = new ContentValues();
        values.put("name", name);
        values.put("family", family);

        database = sqLiteOpenHelper.getWritableDatabase();
        id = database.insert("tbl_persons", null, values);
    } catch (Exception ex) {
        Log.d("Database", "Exception:" + ex.getMessage());
    } finally {
        if( database != null && database.isOpen()) {
            database.close();
        }
    }

    return id;
}

1 ответ

  1. Необходимо вызвать savePersonфункцию в onClickметоде.

    findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String name = editText1.getText().toString();
            String family = editText2.getText().toString();
            Person person = new Person(name, family);
            savePerson(person);
        }
    });