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