保存配置文件的最佳方法是什么所以我想要的是一个包含姓名和电话号码的个人资料。
最聪明的方法是什么?使用 FileStream 或 SharedPreferences,我已经将共享首选项与 1 个变量一起使用,但从未使用过这样的东西。所以任何例子都会很棒!
你也可以通过SQLite数据库.reference这个代码来做到这一点。
适配器.java
package com.example.registrationform;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class RegistrationAdapter {
SQLiteDatabase database_ob;
RegistrationOpenHelper openHelper_ob;
Context context;
public RegistrationAdapter(Context c) {
context = c;
}
public RegistrationAdapter opnToRead() {
openHelper_ob = new RegistrationOpenHelper(context,
openHelper_ob.DATABASE_NAME, null, openHelper_ob.VERSION);
database_ob = openHelper_ob.getReadableDatabase();
return this;
}
public RegistrationAdapter opnToWrite() {
openHelper_ob = new RegistrationOpenHelper(context,
openHelper_ob.DATABASE_NAME, null, openHelper_ob.VERSION);
database_ob = openHelper_ob.getWritableDatabase();
return this;
}
public void Close() {
database_ob.close();
}
public long insertDetails(String fname, String lname) {
ContentValues contentValues = new ContentValues();
contentValues.put(openHelper_ob.FNAME, fname);
contentValues.put(openHelper_ob.LNAME, lname);
opnToWrite();
long val = database_ob.insert(openHelper_ob.TABLE_NAME, null,
contentValues);
Close();
return val;
}
public Cursor queryName() {
String[] cols = { openHelper_ob.KEY_ID, openHelper_ob.FNAME,
openHelper_ob.LNAME };
opnToWrite();
Cursor c = database_ob.query(openHelper_ob.TABLE_NAME, cols, null,
null, null, null, null);
return c;
}
public Cursor queryAll(int nameId) {
String[] cols = { openHelper_ob.KEY_ID, openHelper_ob.FNAME,
openHelper_ob.LNAME };
opnToWrite();
Cursor c = database_ob.query(openHelper_ob.TABLE_NAME, cols,
openHelper_ob.KEY_ID + "=" + nameId, null, null, null, null);
return c;
}
public long updateldetail(int rowId, String fname, String lname) {
ContentValues contentValues = new ContentValues();
contentValues.put(openHelper_ob.FNAME, fname);
contentValues.put(openHelper_ob.LNAME, lname);
opnToWrite();
long val = database_ob.update(openHelper_ob.TABLE_NAME, contentValues,
openHelper_ob.KEY_ID + "=" + rowId, null);
Close();
return val;
}
public int deletOneRecord(int rowId) {
// TODO Auto-generated method stub
opnToWrite();
int val = database_ob.delete(openHelper_ob.TABLE_NAME,
openHelper_ob.KEY_ID + "=" + rowId, null);
Close();
return val;
}
}
打开助手.java
package com.example.registrationform;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class RegistrationOpenHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "REGISTRATION_DB";
public static final String TABLE_NAME = "REGISTRATION_TABLE";
public static final String TABLE_NAME_ONE = "REGISTRATION_TABLE_ONE";
public static final int VERSION = 1;
public static final String KEY_ID = "_id";
public static final String FNAME = "F_NAME";
public static final String PKEY_ID = "pid";
public static final String PROFILE = "profile";
public static final String LNAME = "L_NAME";
public static final String SCRIPT = "create table " + TABLE_NAME + " ("
+ KEY_ID + " integer primary key autoincrement, " + FNAME
+ " text not null, " + LNAME + " text not null );";
public static final String PROFILE_TABLE = "create table " + TABLE_NAME_ONE + " ("
+ PKEY_ID + " integer primary key autoincrement, " + PROFILE
+ " text not null, );";
/* public static final String PROFILE_TABLE="create table profiletable(profileid integer primary key autoincrement,profilename text null);";
public static final String VALUE_TABLE="create table valuetable(id integer primary key autoincrement,value text null,delay );";
*/
public RegistrationOpenHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(SCRIPT);
db.execSQL(PROFILE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("drop table " + TABLE_NAME);
db.execSQL("drop table "+TABLE_NAME_ONE);
onCreate(db);
}
}
这是另一种方式。如果您没有得到结果,请尝试这个,请告诉我。
如果您只想存储一个配置文件,则可以使用共享首选项。如果它不止一个,或者您有更复杂的要求,存储在数据库中将是一个更好的选择。
如果你想要持久保存数据的技术,那么你应该使用FileStream
来读/写文件,因为当你清除应用程序数据时SharedPreferences
不是持久数据,那么SharedPreferences
将被清除
我认为SharedPreferences将是一个更好的选择。从共享首选项中获取值很容易。对于FileStream,您需要具有额外的权限和额外的代码。您可以在共享首选项中存储多个值。对于多配置文件数据库和单个配置文件数据,您可以使用SharedPreferences。
看看这个问题
将多个字符串传递给共享首选项