2013-08-17 141 views
0

我一直在處理幾個不同的數據庫示例。 每一個我用來試圖瞭解SQLite數據庫的例子,我是 得到完全相同的錯誤。我已經試圖研究這個,不能在任何地方找到我的確切的錯誤。SQLite的數據庫問題

感謝以下的任何幫助的代碼,我收到

DatabaseHandler db = new DatabaseHandler(this); 

我越來越無法訪問的代碼錯誤。

在我的數據庫Handler.java文件中,我確實有公共類數據庫處理程序(一個字)。

再次感謝。

主要活動

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); 
} 



} 

}

這是我的數據庫處理程序

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(); 
} 

}

感謝您的幫助

+0

查看更新的答覆 –

回答

2

Unreachable code錯誤告訴你,特定的行永遠不能執行,因爲從程序的其餘部分不存在控制流路徑到代碼。所以錯誤在於,你寫這個語句的位置永遠不可達,並且該代碼永遠不會被執行。這可能是由於邏輯問題,例如,如果在函數內部有return語句之後寫入語句,則不會執行這些語句,因爲函數總是會在這些語句執行之前返回值。

希望這可以讓你理解錯誤的原因。

如需更多幫助,請顯示更多編碼。

更新

正如我在你裏面MainActivity功能onCreateOptionsMenu說,把return true;聲明在剛剛結束後Lod.d..線關閉括號之前。你正在從功能返回。

+0

非常感謝!我把它放在我的log.d後面,效果很棒! – st15jap