Android, SQLite

0

Cześć, znowu przychodzę po pomoc, bo temat mnie w ogóle nie interesuje ale niestety muszę go zrealizować (studia). Sprawa wygląda tak: mam banalną tabele, w apce użytkownik wprowadza dane, usuwa, wyświetla. Chcę, żeby po wpisaniu stringa w miejsce gdzie ma być int wprowadzało losowe dane. Jak się do tego zabrać?
To, że kod nie jest napisany ładnie i według reguł to wiem - nie o to tu chodzi.

Mainactivity

package com.example.xxxx.bazadanych;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.view.View;
import android.database.Cursor;
import android.util.Log;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    public Button btnInsert;
    public Button btnDelete;
    public Button btnSelect;
    public Button btnSearch;
    public EditText editName;
    public EditText editAge;
    public EditText editDelete;
    public EditText editSearch;
    public EditText editSurname;
    public EditText editSex;
    public EditText editPesel;

    ZarzadzajDanymi dm;


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

        dm = new ZarzadzajDanymi(this);

        btnInsert = (Button) findViewById(R.id.insertButton);
        btnDelete = (Button) findViewById(R.id.deleteButton);
        btnSelect = (Button) findViewById(R.id.selectAllButton);
        btnSearch = (Button) findViewById(R.id.searchButton);

        editName = (EditText) findViewById(R.id.imieTextBox);
        editAge = (EditText) findViewById(R.id.wiekTextBox);
        editDelete = (EditText) findViewById(R.id.deleteTextBox);
        editSearch = (EditText) findViewById(R.id.searchTextBox);
        editSurname = (EditText) findViewById(R.id.nazwiskoTextBox);
        editSex = (EditText) findViewById(R.id.sexTextBox);
        editPesel = (EditText) findViewById(R.id.peselTextBox);


        btnSelect.setOnClickListener(this);
        btnInsert.setOnClickListener(this);
        btnDelete.setOnClickListener(this);
        btnSearch.setOnClickListener(this);
    }
    public void showData(Cursor c){
        while (c.moveToNext()){
            Log.i(c.getString(1), c.getString(2));
            Log.i(c.getString(3), c.getString(4));
        }
    }

    @Override
    public void onClick(View v)
    {
        switch (v.getId()){
            case R.id.insertButton:
                dm.insert(editName.getText().toString(),
                        editAge.getText().toString(),
                        editSurname.getText().toString(),
                        editSex.getText().toString(),
                        editPesel.getText().toString());
                break;
            case R.id.selectAllButton:
                showData(dm.selectAll());
                break;
            case R.id.searchButton:
                showData(dm.searchName(editSearch.getText().toString()));
                break;
            case R.id.deleteButton:
                dm.delete(editDelete.getText().toString());
                break;
        }
    }
}

package com.example.xxxx.bazadanych;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.content.Context;
import android.util.Log;
import android.database.Cursor;

public class ZarzadzajDanymi {
    private SQLiteDatabase db;

    public static final String TABLE_ROW_ID = "_id";
    public static final String TABLE_ROW_NAME = "name";
    public static final String TABLE_ROW_AGE = "age";
    public static final String TABLE_ROW_SURNAME = "surname";
    public static final String TABLE_ROW_SEX = "sex";
    public static final String TABLE_ROW_PESEL = "pesel";

    private static final String DB_NAME = "address_book_db";
    private static final int DB_VERSION = 1;
    private static final String TABLE_N_AND_A = "names_and_addresses";


    private class CustomSQLiteOpenHelper extends SQLiteOpenHelper
    {
        public CustomSQLiteOpenHelper(Context context)
        {
            super(context,DB_NAME,null,DB_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db)
        {
            String newTableQueryString = "create table "
                    + TABLE_N_AND_A + " ("
                    + TABLE_ROW_ID
                    + " integer primary key autoincrement not null,"
                    + TABLE_ROW_NAME
                    + " text not null,"
                    + TABLE_ROW_SURNAME
                    + " text not null,"
                    + TABLE_ROW_SEX
                    + " text not null,"
                    + TABLE_ROW_PESEL
                    + " int not null,"
                    + TABLE_ROW_AGE
                    + " int not null);";
            db.execSQL(newTableQueryString);
        }
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {
        }
    }

    public ZarzadzajDanymi(Context context)
    {
        CustomSQLiteOpenHelper helper =
                new CustomSQLiteOpenHelper(context);
        db = helper.getWritableDatabase();
    }

    public void insert(String name, String age, String surname, String sex, String pesel)
    {
        String query = "INSERT INTO " + TABLE_N_AND_A + " (" +
                TABLE_ROW_NAME + ", " + TABLE_ROW_SURNAME + ", " + TABLE_ROW_SEX + ", " + TABLE_ROW_PESEL + ", " + TABLE_ROW_AGE + ") " +
            "VALUES (" +
                "'" + name + "'" + ", " + "'" + surname + "'" + ", " + "'" + sex + "'" + ", " + "'" + pesel + "'" + ", " + "'" + age + "'" + ");";
        Log.i("insert() = ", query);
        db.execSQL(query);
    }

    public void delete(String name)
    {
        String query = "DELETE FROM " + TABLE_N_AND_A +
                " WHERE " + TABLE_ROW_NAME +
                " = '" + name + "';";
        Log.i("delete() = ", query);
        db.execSQL(query);
    }

    public Cursor selectAll() {
        Cursor c = db.rawQuery("SELECT *" + " from " +
        TABLE_N_AND_A,null);
        return c;
    }

    public Cursor searchName(String name) {
        String query = "SELECT " +
                TABLE_ROW_ID + ", " +
                TABLE_ROW_NAME +
                ", " + TABLE_ROW_AGE + ", " +
                TABLE_ROW_SURNAME + ", " +
                TABLE_ROW_SEX + ", " +
                TABLE_ROW_PESEL +
                " from " +
                TABLE_N_AND_A + " WHERE " +
                TABLE_ROW_NAME + " = '" + name + "';";
        Log.i("searchName() = ", query);
        Cursor c = db.rawQuery(query,null);
        return c;
    }
}

0

Twój problem nie ma nic wspólnego z Androidem, to problem typowo programistyczny, który w każdym języku trzeba rozwiązać podobnie. W związku z tym zastanawia mnie po co studiujesz na kierunku na którym wymagają umiejętności programowania, jeżeli interesujesz się czymś innym?

Przy insercie czyli w metodzie onClick sprawdź czy dana wpisana w edita zawiera litery, jeżeli zawiera to wstaw losowe znaki np. za pomocą klasy Random.

0

@Haskell: Oh, nie chodzi mi o samo programowanie, bo sprawdzenie czy dana jest intem czy stringiem to nie problem. Chodziło mi o to gdzie mogę to wstawić, żeby na pewno sprawdzało i śmigało.

0

Jeżeli interesujesz się programowaniem, to najwyższy czas uświadomić sobie, że operacje odczytu i zapisu danych to nieodłączna część programowania. Z kolei bazy danych SQL to jeden z najpopularniejszych sposobów przechowywania danych. Innymi słowy najwyższy czas, żebyś zaczął się interesować co to jest SQL i chociaż pobieżnie ogarniał co z czym i dlaczego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1