lundi 21 septembre 2015

Android programming sqlite intro

I am trying to implement sqlite database in my android application. I am quite new to programming specially android. Here is the code for my application. It seems i have everything right but don't know what's gone wrong. Below is my code---

//This

public class DatabaseManager {




    private static final String DB_NAME = "Organiser.db";
    private static final int DB_VERSION = 1;

    public static abstract class FriendEntry implements BaseColumns{
    public static final String TABLE_FRIEND = "FRIEND";
    //public static final String COLUMN_ID = "_ID";
    public static final String COLUMN_FIRST_NAME = "FIRST_NAME";
    public static final String COLUMN_LAST_NAME = "LAST_NAME";
    public static final String COLUMN_AGE = "_AGE";
    public static final String COLUMN_GENDER = "_GENDER";
    public static final String COLUMN_ADDRESS = "_ADDRESS";}


    public static abstract class TaskEntry implements BaseColumns {
        public static final String TABLE_TASK = "TASK";
        public static final String COLUMN_TASK_NAME = "TASK_NAME";
        public static final String COLUMN_LOCATION = "LOCATION";
        public static final String COLUMN_STATUS = "STATUS";
    }


    private static final String DB_CREATE_FRIEND =
            "CREATE TABLE " + FriendEntry.TABLE_FRIEND +
                    "("
                    + FriendEntry.COLUMN_FIRST_NAME + " VARCHAR(20)," + FriendEntry.COLUMN_LAST_NAME + " VARCHAR(20),"
                    + FriendEntry.COLUMN_AGE+ " INTEGER ,"
                    + FriendEntry.COLUMN_GENDER + " VARCHAR(6) ,"
                    + FriendEntry.COLUMN_ADDRESS + " VARCHAR(50) " + " )";

    private static final String DB_CREATE_TASK =
            "CREATE TABLE " + TaskEntry.TABLE_TASK +
                    "("
                    + TaskEntry.COLUMN_TASK_NAME + " VARCHAR(20)," + TaskEntry.COLUMN_LOCATION + " VARCHAR(20),"
                    + TaskEntry.COLUMN_STATUS + "VARCHAR(20)," + ")";








    private SQLiteDatabase mDatabase;
    private SQLHelper mSQLHelper;
    private Context mContext;

    public DatabaseManager(Context context) {
        this.mContext = context;
        mSQLHelper = new SQLHelper(context);
        this.mDatabase = mSQLHelper.getWritableDatabase();
    }



    //open a database
    public DatabaseManager openReadable() throws SQLException {
        mSQLHelper = new SQLHelper(mContext);
        mDatabase = mSQLHelper.getReadableDatabase();
        return this;
    }

    public void close() {
        mSQLHelper.close();
    }

    //add row
    public boolean addRowFriend(String firstName, String lastName, Integer age,String gender, String address) {
        ContentValues contentValues = new ContentValues();
        //auto-increment id generator
        //contentValues.put("_ID", id);
        contentValues.put("first_name", firstName);
        contentValues.put("last_name", lastName);
        contentValues.put("_age", age);
        contentValues.put("_gender", gender);

        contentValues.put("_address", address);

        try {
            mDatabase.insertOrThrow("FRIEND", null, contentValues);
        } catch (Exception e) {
            Log.e("Error in inserting rows", e.toString());
            e.printStackTrace();
            return false;


        }
        mDatabase.close();
        return true;

    }

    public boolean addRowTask(String taskName, String taskLocation, String status) {


        this.mDatabase = mSQLHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        //auto-increment id generator
        //contentValues.put("_ID", id);
        values.put("task_name", taskName);
        values.put("location", taskLocation);

        values.put("status", status);


        try {
            mDatabase.insertOrThrow("TASK", null, values);
        } catch (Exception e) {
            Log.e("Error in inserting rows", e.toString());
            e.printStackTrace();
            return false;


        }
        mDatabase.close();
        return true;

    }
public class SQLHelper extends SQLiteOpenHelper {


        public SQLHelper(Context context) {
            super(context, DB_NAME, null, DB_VERSION);
        }


        @Override
        public void onCreate(SQLiteDatabase db) {

            db.execSQL(DB_CREATE_FRIEND);
            db.execSQL(DB_CREATE_TASK);

        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            Log.w("Products table",
                    "Upgrading database i.e. dropping table and re-creating it");
            db.execSQL("DROP TABLE IF EXISTS " + DB_CREATE_FRIEND);

            onCreate(db);
        }
    }


}

//My friend table does work, as the data insertion goes well. but the task table is not working properly, everytime I try to add, it throws exception.
Below is my Task main activity.

 private DatabaseManager mDatabaseManager;
    private Cursor cursor;
    //TextView
    private TextView titleResponse;
    private TextView ToDoRec;

    //TextFields
    private EditText add_task , add_location, task_status;


    //Buttons
    private Button addTaskButton;

    //TableLayouts
    private TableLayout add_task_table;

    //Boolean testing
    private boolean taskInserted;
    // private boolean recUpdated;

    //ListViews
    private ListView taskRec;
    //private AdapterView adapterView;

    //ArrayAdapter
    //private ArrayAdapter arrayAdapter;


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

        titleResponse = (TextView) findViewById(R.id.response);
        ToDoRec = (TextView) findViewById(R.id.todoRecord);
        taskRec = (ListView) findViewById(R.id.taskrec);
        add_task_table = (TableLayout) findViewById(R.id.add_todo_table);
        // edit_table = (TableLayout) findViewById(R.id.edit_table);

        add_task_table.setVisibility(GONE);
        //edit_table.setVisibility(GONE);
        taskRec.setVisibility(GONE);
        titleResponse.setText("Press menu to add or edit Task");



        addTaskButton = (Button) findViewById(R.id.btnToDo);
        // editButton = (Button) findViewById();

        addTaskButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mDatabaseManager = new DatabaseManager(ToDo.this);

                add_task = (EditText) findViewById(R.id.addTaskTextField);
                add_location = (EditText) findViewById(R.id.addTaskLocationTextField);
                task_status = (EditText) findViewById(R.id.taskCompletion);


                taskInserted = mDatabaseManager.addRowTask(add_task.getText().toString(), add_location.getText().toString(),task_status.getText().toString());
                if (taskInserted) {
                    titleResponse.setText("The row in the Friend Table inserted");
                }
                else {
                    titleResponse.setText(" Error ! ");
                }

                //This InputMethodManager class reset all the input fields empty after entering data once.

                InputMethodManager imm = (InputMethodManager) getSystemService
                        (Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(add_location.getWindowToken(),
                        InputMethodManager.HIDE_NOT_ALWAYS);
                mDatabaseManager.close();

                add_task.setText("");
                add_location.setText("");
                task_status.setText("");



            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(to_do, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        switch (item.getItemId()) {
            case R.id.addTask:

                insertRec();

                break;
            case R.id.editTask:

                break;
            case R.id.viewTask:
                showRec();
                break;

            default:
                return super.onOptionsItemSelected(item);

        }
        return true;
    }

    public void insertRec(){


        add_task_table.setVisibility(View.VISIBLE);
        //fRec.setVisibility(View.GONE);


        titleResponse.setText("Enter information about Your Friend");
        ToDoRec.setText("");
    }


//Below is my Task xml layout file

<LinearLayout xmlns:android="http://ift.tt/nIICcg"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/response" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/todoRecord" />
    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/add_todo_table">

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/addTaskTextField"
            android:hint="@string/addTaskHint" />
        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/addTaskLocationTextField"
            android:hint="@string/locationTaskHint" />
        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/taskCompletion"
            android:hint="@string/incTaskStatus" />


        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/submitTaskButton"
            android:id="@+id/btnToDo"
            android:longClickable="true" />
    </TableLayout>









    <ListView
        android:id="@+id/taskrec"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:drawSelectorOnTop="false" />


</LinearLayout>

Please help me regarding this. I appreciate.
Thanks

Aucun commentaire:

Enregistrer un commentaire