我正在开发一款Android应用,其中包含商店报价。 请告诉我,将来如何在数据库中添加新引号?
我希望什么是方便的,例如我写一个引用,作者,主题的单独活动,并通过点击将这个引用添加到数据库中。但这些用户不能做什么呢。
我计划使用Firebase实时数据库,但如何在管理员端组织更新,我不知道。 也许我需要编写一个单独的应用程序来处理数据库? 提前谢谢。答案 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是一个非常好的选择,你也可以获得一些额外的功能。