如何更新我的申请内容?

时间:2017-02-22 06:17:32

标签: android database firebase firebase-realtime-database

我正在开发一款Android应用,其中包含商店报价。 请告诉我,将来如何在数据库中添加新引号?

我希望什么是方便的,例如我写一个引用,作者,主题的单独活动,并通过点击将这个引用添加到数据库中。但这些用户不能做什么呢。

我计划使用Firebase实时数据库,但如何在管理员端组织更新,我不知道。 也许我需要编写一个单独的应用程序来处理数据库? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

引言我希望您希望将数据存储在数据库中,并且您还需要稍后更新这些引号。

首先,您需要为SqliteHelper提供类似这样的实现

public class DBHelper extends SQLiteOpenHelper {
    public static final String DB_NAME = "app_db";
    private static final int DB_VERSION = 1;

    public DBHelper(@ApplicationContext Application application) {
        super(application, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        if (db.isOpen()) {
            //Create Quotes Table
            QuotesDao.onCreateTable(db);
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if (db.isOpen()) {
            //Upgrade Contacts Table
            QuotesDao.onUpgradeTable(db, oldVersion, newVersion);
        }
    }

现在创建数据库后,你有一个表引用,它基本上是在QuotesDao中管理的。

QuotesDao是Quotes表的助手类,它提供插入,更新,获取或删除操作。 这样的事情: -

public class QuotesDao {
public static final String TAG = QuotesDao.class.getSimpleName();
public static String QUOTES = "contact_photo_url";

private static final String TABLE_NAME = "quotes";
private static final String[] ALL_COLUMNS = new String[]{
        QUOTES,
};


public static void onCreateTable(SQLiteDatabase db) {
    String sql = "CREATE TABLE IF NOT EXISTS "
            + TABLE_NAME + "("
            + QUOTES + " TEXT"
            + ")";
    db.execSQL(sql);
}


public static void onUpgradeTable(SQLiteDatabase db, int oldVersion, int newVersion) {

}


public synchronized List<Quotes> fetchQuotes(DBHelper dbHelper) {
    SQLiteDatabase db = dbHelper.getReadableDatabase();
    Cursor cursor = db.query(TABLE_NAME, ALL_COLUMNS, null, null, null, null, null);
    //Close the DB when its work is done
    List<Quotes> quotes = null;// Parse Cursor object into Quotes list;
    return quotes;
}


public synchronized long insert(DBHelper dbHelper, Quotes quotes) {
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    ContentValues cv = null;// Map your Object in content values ;
    long insert = db.insertWithOnConflict(TABLE_NAME, null
            , cv
            , SQLiteDatabase.CONFLICT_REPLACE);
    return insert;
}


public synchronized long updateQuotes(ContactInfo contactInfo, DBHelper dbHelper) {
    //Write Update logic here
    return id;
}


/**
 * Method to delete a contact from table
 * @param contactInfo Contact which need to be deleted
 * @param dbHelper DBHelper
 */
public synchronized void delete(ContactInfo contactInfo, DBHelper dbHelper) {
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    db.delete(TABLE_NAME, null, null);
}

/**
 * Method to clear all the data from store contact table
 * @param dbHelper DBHelper
 */
public void clear(DBHelper dbHelper) {
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    db.delete(TABLE_NAME, null, null);
}

public void onDeleteTable(SQLiteDatabase db) {
    db.execSQL("DROP TABLE IF EXISTS '" + TABLE_NAME + "'");
}

}

将来如果你需要添加更多引号,你将使用insert方法在Qutes表中插入引号。

如果您需要更新Table的架构,那么首先需要升级数据库版本,然后您将在DBHelper的onUpgradeTable()方法中调用,您可以在其中编写升级表业务逻辑,以获取有关如何升级表的更多详细信息here

答案 1 :(得分:0)

要存储报价,您需要实现用户可以添加新报价的屏幕。要存储该对象,您需要创建SQLite数据库(用于持久存储)。

但是你的用例是,你也想管理那个数据库。所以,对于那个SQLite没有帮助。对于该用例,您需要在远程服务器上存储数据。从那里只有你可以管理该数据库。

Firebase是一个非常好的选择,你也可以获得一些额外的功能。