0

I have been working with a few different database examples. Every example i am using to try to learn about SQLite databases i am getting the exact same error. I have already tried to research this and cannot find my exact error anywhere.

Thanks for any help below is the code and the error i am getting

 DatabaseHandler db = new DatabaseHandler(this);

I am getting unreachable code.

in my Database Handler.java file i do have the public class Database Handler (one word).

Thanks again.

Main Activity

 public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
 // Inflate the menu; this adds items to the action bar if it is present.
 getMenuInflater().inflate(R.menu.main, menu);
 return true;
 DatabaseHandler db = new DatabaseHandler(this);
 /**
 * CRUD Operations
 * */
 // Inserting Contacts
 Log.d("Insert: ", "Inserting .."); 
 db.addContact(new Contact("Ravi", "9100000000")); 
 db.addContact(new Contact("Srinivas", "9199999999"));
 db.addContact(new Contact("Tommy", "9522222222"));
 db.addContact(new Contact("Karthik", "9533333333"));
 // Reading all contacts
 Log.d("Reading: ", "Reading all contacts.."); 
 List<Contact> contacts = db.getAllContacts(); 
 for (Contact cn : contacts) {
 String log = "Id: "+cn.getID()+" ,Name: " + cn.getName() + " ,Phone: " + cn.getPhoneNumber();
 // Writing Contacts to log
 Log.d("Name: ", log);
}
}

}

this is my Database Handler

 package com.example.databasetutorial;
 import java.util.ArrayList;
 import java.util.List;
 import android.content.ContentValues;
 import android.content.Context;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteOpenHelper;
 public class DatabaseHandler extends SQLiteOpenHelper {
// All Static variables
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "contactsManager";
// Contacts table name
private static final String TABLE_CONTACTS = "contacts";
// Contacts Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_PH_NO = "phone_number";
public DatabaseHandler(Context context) {
 super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
 String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
 + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
 + KEY_PH_NO + " TEXT" + ")";
 db.execSQL(CREATE_CONTACTS_TABLE);
}
// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 // Drop older table if existed
 db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
 // Create tables again
 onCreate(db);
}
/**
 * All CRUD(Create, Read, Update, Delete) Operations
 */
// Adding new contact
void addContact(Contact contact) {
 SQLiteDatabase db = this.getWritableDatabase();
 ContentValues values = new ContentValues();
 values.put(KEY_NAME, contact.getName()); // Contact Name
 values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone
 // Inserting Row
 db.insert(TABLE_CONTACTS, null, values);
 db.close(); // Closing database connection
}
// Getting single contact
Contact getContact(int id) {
 SQLiteDatabase db = this.getReadableDatabase();
 Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
 KEY_NAME, KEY_PH_NO }, KEY_ID + "=?",
 new String[] { String.valueOf(id) }, null, null, null, null);
 if (cursor != null)
 cursor.moveToFirst();
 Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
 cursor.getString(1), cursor.getString(2));
 // return contact
 return contact;
}
// Getting All Contacts
public List<Contact> getAllContacts() {
 List<Contact> contactList = new ArrayList<Contact>();
 // Select All Query
 String selectQuery = "SELECT * FROM " + TABLE_CONTACTS;
 SQLiteDatabase db = this.getWritableDatabase();
 Cursor cursor = db.rawQuery(selectQuery, null);
 // looping through all rows and adding to list
 if (cursor.moveToFirst()) {
 do {
 Contact contact = new Contact();
 contact.setID(Integer.parseInt(cursor.getString(0)));
 contact.setName(cursor.getString(1));
 contact.setPhoneNumber(cursor.getString(2));
 // Adding contact to list
 contactList.add(contact);
 } while (cursor.moveToNext());
 }
 // return contact list
 return contactList;
}
// Updating single contact
public int updateContact(Contact contact) {
 SQLiteDatabase db = this.getWritableDatabase();
 ContentValues values = new ContentValues();
 values.put(KEY_NAME, contact.getName());
 values.put(KEY_PH_NO, contact.getPhoneNumber());
 // updating row
 return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",
 new String[] { String.valueOf(contact.getID()) });
}
// Deleting single contact
public void deleteContact(Contact contact) {
 SQLiteDatabase db = this.getWritableDatabase();
 db.delete(TABLE_CONTACTS, KEY_ID + " = ?",
 new String[] { String.valueOf(contact.getID()) });
 db.close();
}
// Getting contacts Count
public int getContactsCount() {
 String countQuery = "SELECT * FROM " + TABLE_CONTACTS;
 SQLiteDatabase db = this.getReadableDatabase();
 Cursor cursor = db.rawQuery(countQuery, null);
 cursor.close();
 // return count
 return cursor.getCount();
}

}

Thanks for your help

Shobhit Puri
26.1k12 gold badges99 silver badges125 bronze badges
asked Aug 17, 2013 at 23:26
0

1 Answer 1

2

Unreachable code error tells you that that particular line can never be executed because there exists no control flow path to the code from the rest of the program. So the error is that the location where you are writing this statement is never reachable and that piece code would never be executed. This can be because of logical problems such as if you have statements written after the return statement inside a function, then none of those would be executed because the function would always return the value before those statements gets executed.

Hope this makes you understand the reason of the error.

Show more code if you want to more help.

Update

As I said in your MainActivity inside onCreateOptionsMenu function, put the return true; statement at the end of just before closing the parenthesis after Lod.d.. line. You are returning from the function before hand.

answered Aug 17, 2013 at 23:38
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.