2015-12-30 14 views
0

我最近開始編寫應用程序,爲自己編寫一個編程速成課程,以便我可以給應用程序和遊戲開發一個旋風。下面的代碼是我寫的創建一個包含三列的數據庫 - 一個ID列,一個電子郵件列和一個密碼列。 (完全公開,我在網上使用教程來寫這個,並且將我自己的實踐加入到練習中)。
我在手機上運行了完整的程序,只用一列就可以從數據庫中添加刪除功能,但是當我爲第三列添加代碼時,一切都停止了。我犯了一個可怕的錯誤,還是我在某處丟失了一條線?感謝您閱讀這篇文章。我的模擬器日誌無法識別我向我的SQL數據庫中添加了第三列

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 


public class EmailDBHandler extends SQLiteOpenHelper{ 

private static final int DATABASE_VERSION = 1; 
private static final String DATABASE_NAME = "loginEntries.db"; 
public static final String TABLE_LOGINENTRIES = "loginEntries"; 
public static final String COLUMN_ID = "_id"; 
public static final String COLUMN_EMAILADDRESS = "emailAddress"; 
/*this is where I initialized the column "password" */ 

public static final String COLUMN_PASSWORD = "password"; 


public EmailDBHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { 
    super(context, DATABASE_NAME, factory, DATABASE_VERSION); 
} 


@Override 
public void onCreate(SQLiteDatabase db) { 
    String query = "CREATE TABLE " + TABLE_LOGINENTRIES + "(" + 
      COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      COLUMN_EMAILADDRESS + " TEXT " + 
/*this part of the code shows that I added the column to my table*/ 

      COLUMN_PASSWORD + " TEXT " + ");"; 
    db.execSQL(query); 
} 

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

//add new row to Database 

public void addEntry(LoginEntries entry){ 
    ContentValues values = new ContentValues(); 
    values.put(COLUMN_EMAILADDRESS,entry.get_emailAddress()); 
    values.put(COLUMN_PASSWORD,entry.get_password()); 
    SQLiteDatabase db = getWritableDatabase(); 
    db.insert(TABLE_LOGINENTRIES, null, values); 
    db.close(); 
} 


//delete items from database 

public void deleteEmailEntry(String emailEntry){ 
    SQLiteDatabase db = getWritableDatabase(); 
    db.execSQL("DELETE FROM " + TABLE_LOGINENTRIES + " WHERE " + COLUMN_EMAILADDRESS + "=\"" + 
      emailEntry + "\";"); 
} 


public void deletePasswordEntry(String passwordEntry){ 
    SQLiteDatabase db = getWritableDatabase(); 
    db.execSQL("DELETE FROM " + TABLE_LOGINENTRIES + " WHERE " + COLUMN_PASSWORD + "=\"" + 
      passwordEntry + "\";"); 
} 

//Print database as a string 
public String databaseToString(){ 
    String dbString = ""; 
    SQLiteDatabase db = getWritableDatabase(); 
    String query = "SELECT * FROM " + TABLE_LOGINENTRIES + " WHERE 1"; 

    //cursor point to a location in your results 
    Cursor c = db.rawQuery(query, null); 
    c.moveToFirst(); 
    while(!c.isAfterLast()){ 
     if(c.getString(c.getColumnIndex(COLUMN_EMAILADDRESS)) !=null){ 
      dbString += c.getString(c.getColumnIndex(COLUMN_EMAILADDRESS)); 
      dbString += "\n"; 
     }c.moveToNext(); 
    } 
    db.close(); 
    return dbString; 
} 
public String databaseTwoString(){ 
    String dbStringTwo = ""; 
    SQLiteDatabase db = getWritableDatabase(); 
    String query = "SELECT * FROM " + TABLE_LOGINENTRIES + " WHERE 1"; 

    //cursor point to a location in your results 
    Cursor c = db.rawQuery(query, null); 
    c.moveToFirst(); 
    while(!c.isAfterLast()){ 
     if(c.getString(c.getColumnIndex(COLUMN_PASSWORD)) != null){ 
      dbStringTwo += c.getString(c.getColumnIndex(COLUMN_PASSWORD)); 
      dbStringTwo += "\n"; 
     } 
     c.moveToNext(); 
    } 
    db.close(); 
    return dbStringTwo; 
} 
} 
/*The code below is the declaration of the items in my database*/ 

public class LoginEntries { 
private int _id; 
private String _emailAddress; 
private String _password; 

public LoginEntries(){} 

public LoginEntries(String emailAddress, String password){ 
    this._emailAddress = emailAddress; 
    this._password = password; 
} 
public void set_id(int _id) { 
    this._id = _id; 
} 

public void set_emailAddress(String _emailAddress) {this._emailAddress = _emailAddress;} 

public void set_password(String _password) {this._password = _password;} 

public int get_id() { 
    return _id; 
} 

public String get_emailAddress() {return _emailAddress;} 

public String get_password() { return _password;} 
} 

回答

4

下一次請註明確切的錯誤消息以及注意你標記你的問題的產品!

我認爲錯誤是在下面的行:

COLUMN_EMAILADDRESS + " TEXT " + 

因爲沒有逗號此列定義從下一個(密碼)分開。將其更改爲:

COLUMN_EMAILADDRESS + " TEXT, " + 

請注意comna後的單詞TEXT。

+0

謝謝。這是我第一次發佈。下次我會知道的。 –

0

你沒有增加DATABASE_VERSIONDATABASE_VERSION = 2因此應用程序並沒有意識到它「應該」重新創建數據庫。

要麼完全卸載該應用程序,並刪除所有本地緩存​​(因此它具有「重新創建DB上一次運行),或者只是讓DB_Ver = 2

+0

謝謝,下次我會記住這一點。 –

相關問題