好吧,我对 android 完全陌生,通过我的努力,我创建了一个应用程序,它将所有与您的日常生活相关的密码存储在数据库中。因此,当您需要或感到困惑时,您可以通过此应用程序访问。
好吧,我的一位朋友告诉了一个选项,可以对存储的任何内容进行备份,以备不时之需,并避免将来丢失任何关键数据。
因此,我正在考虑在我的应用程序中实现一个按钮,当用户单击该按钮时,必须将存储在数据库中的所有信息备份到 SDCard,扩展名为 .txt(为什么是 .txt,因为它甚至可以轻松导入到系统中)方便参考)。
我的数据库的详细信息:它包含五个字段。
_id(varchar), profile(varchar), username(varchar), description(varchar), password(varchar)
public class DatabaseHandler {
public static final String KEY_ROWID = "_id";
public static final String KEY_PROFILE = "profile";
public static final String KEY_UNAME = "uname";
public static final String KEY_DESC = "desc";
public static final String KEY_PASSWORD = "password";
private static final String TAG = "DBAdapter";
//private static final String TAG = DBAdapter.class.getSimpleName();
private static final String DATABASE_NAME = "mypass";
private static final String DATABASE_TABLE = "mypasswords";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE =
"create table mypass (_id integer primary key autoincrement, "+ "profile varchar ,"+ "uname varchar ,"+ "desc varchar ,"+ "pass varchar");";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public DatabaseHandler(Context ctx)
{
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion)
{
Log.w(TAG, "Upgrading database from version " + oldVersion
+ " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS productdet");
onCreate(db);
}
}
//---opens the database---
public DatabaseHandler open() throws SQLException
{
db = DBHelper.getWritableDatabase();
return this;
}
//---closes the database---
public void close()
{
DBHelper.close();
}
//---insert a title into the database---
public long insertTitle(String proname, String procost)
{
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_PRONAME, proname);
initialValues.put(KEY_PROCOST, procost);
return db.insert(DATABASE_TABLE, null, initialValues);
}
//---deletes a particular title---
public boolean deleteTitle(long rowId)
{
return db.delete(DATABASE_TABLE, KEY_ROWID +
"=" + rowId, null) > 0;
}
//---retrieves all the titles---
public Cursor getAllTitles()
{
return db.query( DATABASE_TABLE, new String[] {
KEY_ROWID,
KEY_PRONAME,
KEY_PROCOST,
},
null,
null,
null, null, null);
}
//---retrieves a particular title---
public Cursor getTitle(long rowId) throws SQLException
{
Cursor mCursor =
db.query(true, DATABASE_TABLE, new String[] {
KEY_ROWID,
KEY_PRONAME,
KEY_PROCOST,
},
KEY_ROWID + "=" + rowId,
null,
null,
null, null, null
);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
//---updates a title---
public boolean updateTitle(long rowId, String proname,
String procost)
{
ContentValues args = new ContentValues();
args.put(KEY_PRONAME, proname);
args.put(KEY_PROCOST, procost);
return db.update(DATABASE_TABLE, args,
KEY_ROWID + "=" + rowId, null) > 0;
}
}
所以每一行的备份必须是一个在另一个之下。
例子:
1 台自动柜员机 sg sbi 1234
2 银行 xxx ICICI @1234xxx
3 yyy ggfb hgfds 734687
某种编码和示例参考对我有好处。当我用谷歌搜索时,我没有找到任何 .txt 格式的备份。
希望我能找到一个好的答复来完成备份项目。
帮助肯定会受到赞赏。提前致谢。