我有一个网络应用程序,用户可以在其中分享Facebook等消息,图像和视频。我用java开发了一个Android应用程序。我正在使用PHP(webservice)从mysql数据库中检索数据。如果手机有互联网连接,它可以正常工作。如果手机没有互联网连接,我现在正在显示错误信息。但是我想向我的用户显示移动设备处于离线模式时已经检索到的消息,因为Facebook在离线状态下显示旧的新闻源。我读到我们需要将数据存储在内部sqllite数据库中。如果是这样,我该如何轻松实现这一目标?
答案 0 :(得分:0)
您可以使用嵌入式SQLite对其进行存档,嵌入式SQLite是android中的嵌入式数据库。您可以从php读取数据,将其写在SQLite上,然后从中脱机读取。有关详细信息,我在http://www.vogella.com/tutorials/AndroidSQLite/article.html
为您找到了一个非常简单的教程 祝你好运答案 1 :(得分:0)
希望这有助于您入门..
你需要创建一个扩展SQLiteOpenHelper的类,我们在其中声明字段,表和数据库方法等等。
public class DatabaseHandler extends SQLiteOpenHelper {
//Database Version
private static final int DATABASE_VERSION = 1;
//Database Name
private static final String DATABASE_NAME = "MyDatabase";
//Tables
private static final String TABLE_USERS = "users";
//Columns
//Table User
private static final String KEY_USERS_ID = "id";
private static final String KEY_USERS_USERNAME = "username";
private static final String KEY_USERS_PASSWORD = "password";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
//CREATE TABLE USERS
String CREATE_TABLE_USERS = "CREATE TABLE " + TABLE_USERS + "(" +
KEY_USERS_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_USERS_USERNAME + " TEXT, " +
KEY_USERS_PASSWORD + " TEXT)";
db.execSQL(CREATE_TABLE_USERS);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_USERS);
onCreate(db);
}
public void addUser(String username, String password)
{
SQLiteDatabase db = this.getWritableDatabase();
try {
db.beginTransaction();
ContentValues values = new ContentValues();
values.put(KEY_USERS_USERNAME, username);
values.put(KEY_USERS_PASSWORD, password);
db.insert(TABLE_USERS, null, values);
db.setTransactionSuccessful();
}
catch (SQLException e) {}
finally
{
db.endTransaction();
}
db.close();
}
}
正如您在本示例中所看到的,我们正在创建我们的数据库,创建了一个名为USERS的表,其中包含一个autoincremented int id和另外两个用于用户名和密码的列...然后我添加了一个方法来向用户添加新用户表