vendredi 15 janvier 2016

Is this correct way to use Sqlite database in Android

I am beginner to Android. Now I start learning it. Now I am creating a register form that is integrated with Sqlite database. But it is throwing error when I click the register button. Please help me. Is this correct ? What is wrong with my code. How can I debug my application in Android. I am using Gennymotion Emulator.

This is my database helper class : DatabaseHelper.java

public class DatabaseHelper extends SQLiteOpenHelper {

    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "contacts.db";
    private static final String TABLE_NAME = "contacts";
    private static final String COLUMN_ID = "id";
    private static final String COLUMN_NAME = "name";
    private static final String COLUMN_PASSWORD = "password";
    SQLiteDatabase db;
    private static final String TABLE_CREATE = "create table contacts (id integer primary key not null auto_increment,"+
            "name text not null , password text not null);";

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

    @Override
    public void onCreate(SQLiteDatabase db) {
        this.db = db;
        db.execSQL(TABLE_CREATE);
    }

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

    public  void insertContact(Contact c)
    {
        db = getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(COLUMN_NAME,c.getName());
        values.put(COLUMN_PASSWORD,c.getPassword());
        db.insert(TABLE_NAME, null, values);
        db.close();
    }

    public  String getUsers()
    {
        String users = "";
        db = this.getReadableDatabase();
        String query = "SELECT name,password FROM "+TABLE_NAME;
        Cursor cursor = db.rawQuery(query,null);
        if(cursor.moveToFirst())
        {
            do{
                users = users + cursor.getString(0)+":"+cursor.getString(1)+" ";
            }while(cursor.moveToNext());
        }
        return users;
    }
}

This is my Register activity.

public class RegisterActivity extends Activity {

    DatabaseHelper helper = new DatabaseHelper(this);
    Button registerBtn;

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

        registerBtn = (Button)findViewById(R.id.btn_register);
        registerBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                registerBtnClick(v);
            }
        });
    }

    public void registerBtnClick(View v)
    {
        String name = ((EditText)findViewById(R.id.tf_name_register)).getText().toString();
        String password = ((EditText)findViewById(R.id.tf_password_register)).getText().toString();
        String confirm_password = ((EditText)findViewById(R.id.tf_confirm_password_register)).getText().toString();

        if(name.isEmpty())
        {
            Toast.makeText(getBaseContext(),"Name should not be empty",Toast.LENGTH_LONG).show();
        }
        else if(password.isEmpty())
        {
            Toast.makeText(getBaseContext(),"Password is required",Toast.LENGTH_LONG).show();
        }
        else if(!password.equals(confirm_password))
        {
            Toast.makeText(getBaseContext(),"Password does not match",Toast.LENGTH_LONG).show();
        }
        else{
            //save to database
             Contact c = new Contact();
            c.setName(name);
            c.setPassword(password);
            helper.insertContact(c);

        }
    }
}

Please help me when I hit register button. It is throwing error. How can I detect error and what is wrong with my code please ? I just start learning android.

Aucun commentaire:

Enregistrer un commentaire