我希望创建一个‘问答’应用程序,将有多个类别,在这些类别将是用户将能够回答的问题,按照顺序,他们的进展将被保存。我希望将进度保存在本地,这样它就可以不用互联网使用,但如果可能的话,我也想访问一些正在保存的信息,例如用户已经完成了什么类别?
我有Java和SQL知识,但当涉及到将它们相加在一起时,我对整个过程感到非常困惑。
我是否需要在应用程序中实现SQLite数据库来为用户存储进度,以及将所需数据在线存储的常规SQL服务器?我本来希望能够使用SQLite数据库来完成这两项工作,但我已经看过了,但我不知道是否有可能。
谢谢。
发布于 2017-08-11 15:32:31
SQLite是一个内部的安卓数据库,只有用户才能访问它。如果您之前没有使用SQLite的经验,我想提到的是,如果您重新格式化了该应用程序的结构,您将不得不删除该应用程序并再次安装它,因为只有在该应用程序首次打开时才调用onCreate()方法。
对于你的问题,你可以这样做:
用户不需要访问互联网就可以通过测试,并且每个测试结果都可以存储在SQLite中。您可以简单地添加一条语句来检查用户是否连接到互联网。如果他是连接的,从SQLite获取所有数据,使JSON对象从您获得的数据中生成,并使用Volley或Retrofit通过您应该创建的REST Api将这些数据发送到Api服务器。如果你有任何问题,请问
发布于 2017-08-11 15:23:27
SQLite数据库仅用于本地存储,这意味着您将无法使用它与其他设备通信。
下面是我的java和SQLite交互的示例
public List multiplyFat(){
String totalFat = "SELECT " + total + " FROM " + MyTable + " WHERE ( "
+ gas + " + " + shopping + " ) > 1200";
SQLiteDatabase db = this.getReadableDatabase(); 因为我们需要打开一个可读的数据库会话
List<Food> storeTotalFat = new ArrayList<>(); 我们创建一个数组来存储来自SQLite数据库的数据。
Cursor cursor = db.rawQuery(totalFat, null);将光标视为引导代码通过上述查询生成的所有行的一种方法。
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
do {
double fat = Double.parseDouble(cursor.getString(0));
storeTotalFat.add(new Food(fat));
} cursor.moveToNext();
}
cursor.close();
return storeTotalFat;
}现在,当从另一个活动调用此方法时,您将准备好一个已填充的ArrayList来执行您想要的任何操作。
//关于您要使用的数据库的问题
由于您想要这个共享数据库,所以可以使用Google云平台。
我更喜欢使用,但这在NoSQL之外有效,这意味着您必须使用JSON进行查询。
发布于 2017-08-10 21:04:26
如果要在本地保存数据,则需要SharedPreferences (https://developer.android.com/training/basics/data-storage/shared-preferences.html)。数据很少,所以浪费了一个数据库。相反,如果您想要一个在线数据库,例如,您需要Firebase。它非常好,并为您提供其他工具,如崩溃工具,以了解您的应用程序崩溃在所有设备(https://firebase.google.com/docs/android/setup)。
例如,您可以使用SharedPreferences保存问题,并使用Firebase记录所有玩家的积分和名称。SQLite只是本地的( https://stackoverflow.com/a/21599873/7339411),但不使用它,您可以使用SharedPreferences,它更容易和更快。
https://stackoverflow.com/questions/45622907
复制相似问题