【问题标题】:How to update the content of my application? [closed]如何更新我的应用程序的内容? [关闭]
【发布时间】:2023-03-11 17:55:01
【问题描述】:

我正在开发一个 Android 应用,其中存储报价。 请告诉我,将来如何在数据库中添加新的报价?

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

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

【问题讨论】:

  • 您可以为已登录的管理员用户创建一个特殊的quote-adding-activity,然后您可以使用firebase安全规则来强制执行。

标签: android database firebase firebase-realtime-database


【解决方案1】:

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

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

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

【讨论】:

  • 如何与数据库交互?从我的应用程序?那么如何让什么人看不到的附加功能呢?编写一个单独的应用程序来处理数据库?
  • - 这是 firebase Firebase Guide 的完整指南。 - 根据用户制作功能,您可以保存用户类型,并据此显示或隐藏功能。
【解决方案2】:

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

首先,您需要为 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);
        }
    }

当您完成创建数据库后,现在您有一个表 Quotes,它基本上在 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 + "'");
}

}

如果您以后需要添加更多引号,您将使用插入方法将引号插入 Qutes 表中。

如果您需要更新 Table 的模式,那么首先您需要升级 DB 版本,然后您将调用 DBHelper 的 onUpgradeTable() 方法,您可以在其中编写升级表业务逻辑以获取更多详细信息如何升级表参考here.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    相关资源
    最近更新 更多