我最近開始編寫應用程序,爲自己編寫一個編程速成課程,以便我可以給應用程序和遊戲開發一個旋風。下面的代碼是我寫的創建一個包含三列的數據庫 - 一個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;}
}
謝謝。這是我第一次發佈。下次我會知道的。 –