android开发基础12-数据存储
基础数据存储
·
SharedPreference存储
android提供的,用来以最简单的方式对数据进行永久性保存的方法
public class MainActivity extends Activity {
private String mr = "mr", mrsoft = "mrsoft"; //定义后台用户名与密码
private String username, password; //输入的用户名和密码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText usernameET = (EditText) findViewById(R.id.username); //获取用户名编辑框
final EditText passwordET = (EditText) findViewById(R.id.password); //获取密码编辑框
ImageButton login = (ImageButton) findViewById(R.id.login); //获取登录按钮
// 获得SharedPreferences,并创建文件名称为"mrsoft"
final SharedPreferences sp = getSharedPreferences("mrsoft", MODE_PRIVATE);
final SharedPreferences.Editor editor = sp.edit(); // 获得Editor对象,用于存储用户名与密码信息
//判断SharedPreferences文件中,用户名、密码是否存在
if (sp.getString("username", username) != null && sp.getString("password", password) != null) {
//存在就判断用户名、密码与后台是否相同,相同直接登录
if (sp.getString("username", username).equals(mr) && sp.getString("password", password).equals(mrsoft)) {
Intent intent = new Intent(MainActivity.this, MessageActivity.class); //通过Intent跳转登录后界面
startActivity(intent); //启动跳转界面
}
} else {
//实现SharedPreferences文件不存在时,手动登录并存储用户名与密码
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
username = usernameET.getText().toString(); //获得输入的用户名
password = passwordET.getText().toString(); //获得输入的密码
//如果输入用户名、密码与后台相同时,登录并存储
if (username.equals(mr) && password.equals(mrsoft)) { //判断输入的用户名密码是否正确
Toast.makeText(MainActivity.this, "用户名、密码正确", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MainActivity.this, MessageActivity.class); //通过Intent跳转登录后界面
startActivity(intent); //启动跳转界面
editor.putString("username", username); //存储用户名
editor.putString("password", password); //存储密码
editor.commit(); //提交信息
Toast.makeText(MainActivity.this, "已保存用户名密码", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(MainActivity.this, "用户名或密码错误", Toast.LENGTH_SHORT).show();
}
}
});
}
}
}
文件存储
public class MainActivity extends Activity {
byte[] buffer = null; //定义保存数据的数组
private File file; //定义存储路径
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText etext = (EditText) findViewById(R.id.editText); //获取用于填写记事本信息的编辑框组件
ImageButton btn_save = (ImageButton) findViewById(R.id.save); //获取保存按钮
ImageButton btn_abolish = (ImageButton) findViewById(R.id.abolish); //获取取消按钮
file = new File(Environment.getExternalStorageDirectory(), "Text.text"); //设置存储sd卡根目录
btn_save.setOnClickListener(new View.OnClickListener() { //实现外部存储填写的文本信息
@Override
public void onClick(View v) {
FileOutputStream fos = null; //定义文件输出流
String text = etext.getText().toString(); //获取文本信息
try {
fos = new FileOutputStream(file); //获得文件输出流,并指定文件保存的位置
fos.write(text.getBytes()); //保存文本信息
fos.flush(); //清除缓存
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close(); //关闭文件输出流
Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
});
//实现第二次打开应用时显示上一次所保存的文本信息
FileInputStream fis = null; //定义文件输入流
try {
fis = new FileInputStream(file); //获得文件输入流
buffer = new byte[fis.available()]; //保存数据的数组
fis.read(buffer); //从输入流中读取数据
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close(); //关闭输入流
String data = new String(buffer); // 获得数组中保存的数据
etext.setText(data); //保存到编辑框中
} catch (IOException e) {
e.printStackTrace();
}
}
}
btn_abolish.setOnClickListener(new View.OnClickListener() { //实现单击取消按钮,退出应用
@Override
public void onClick(View v) {
finish(); //退出应用
}
});
}
}
数据库存储
1、创建数据库
openOrCreateDatabase()
继承SQLiteOpenHelper类
public class DBOpenHelper extends SQLiteOpenHelper {
//定义创建数据表dict的SQL语句
final String CREATE_TABLE_SQL =
"create table dict(_id integer primary " +
"key autoincrement , word , detail)";
public DBOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, null, version); //重写构造方法并设置工厂为null
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_SQL); //创建单词信息表
}
@Override
// 重写基类的onUpgrade()方法,以便数据库版本更新
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//提示版本更新并输出旧版本信息与新版本信息
System.out.println("---版本更新-----" + oldVersion + "--->" + newVersion);
}
}
2、插入数据
public class AddActivity extends AppCompatActivity {
private DBOpenHelper dbOpenHelper; //定义DBOpenHelper,用于与数据库连接
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
//创建DBOpenHelper对象,指定名称、版本号并保存在databases目录下
dbOpenHelper = new DBOpenHelper(AddActivity.this, "dict.db", null, 1);
final EditText etWord=(EditText)findViewById(R.id.add_word); //获取添加单词的编辑框
final EditText etExplain=(EditText)findViewById(R.id.add_interpret); //获取添加解释的编辑框
ImageButton btn_Save= (ImageButton) findViewById(R.id.save_btn); //获取保存按钮
ImageButton btn_Cancel= (ImageButton) findViewById(R.id.cancel_btn1); //获取取消按钮
btn_Save.setOnClickListener(new View.OnClickListener() { //实现将添加的单词解释保存在数据库中
@Override
public void onClick(View v) {
String word = etWord.getText().toString(); //获取填写的生词
String explain = etExplain.getText().toString(); //获取填写的解释
if (word.equals("")||explain.equals("")){ //如果填写的单词或者解释为空时
Toast.makeText(AddActivity.this, "填写的单词或解释为空", Toast.LENGTH_SHORT).show();
}else {
// 调用insertData()方法,实现插入生词数据
insertData(dbOpenHelper.getReadableDatabase(), word, explain);
// 显示提示信息
Toast.makeText(AddActivity.this, "添加生词成功!", Toast.LENGTH_LONG).show();
}
}
});
btn_Cancel.setOnClickListener(new View.OnClickListener() { //实现返回查询单词界面
@Override
public void onClick(View v) {
Intent intent=new Intent(AddActivity.this,MainActivity.class); //通过Intent跳转查询单词界面
startActivity(intent);
}
});
}
//创建insertData()方法实现插入数据
private void insertData(SQLiteDatabase readableDatabase, String word, String explain) {
ContentValues values=new ContentValues();
values.put("word", word); //保存单词
values.put("detail", explain); //保存解释
readableDatabase.insert("dict",null , values);//执行插入操作
}
}
public class MainActivity extends AppCompatActivity {
private DBOpenHelper dbOpenHelper; //定义DBOpenHelper
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建DBOpenHelper对象,指定名称、版本号并保存在databases目录下
dbOpenHelper = new DBOpenHelper(MainActivity.this, "dict.db", null, 1);
final ListView listView = (ListView) findViewById(R.id.result_listView); //获取显示结果的ListView
final EditText etSearch = (EditText) findViewById(R.id.search_et); //获取查询内容的编辑框
ImageButton btnSearch = (ImageButton) findViewById(R.id.search_btn); //获取查询按钮
Button btn_add = (Button) findViewById(R.id.btn_add); //获取跳转添加生词界面的按钮
btn_add.setOnClickListener(new View.OnClickListener() { //单击添加生词按钮,实现跳转到添加生词的界面
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, AddActivity.class); //通过Intent跳转添加生词界面
startActivity(intent);
}
});
btnSearch.setOnClickListener(new View.OnClickListener() { //单击查询按钮,实现查询词库中的单词
@Override
public void onClick(View v) {
String key = etSearch.getText().toString(); //获取要查询的单词
//查询单词
Cursor cursor=dbOpenHelper.getReadableDatabase().query("dict",null
,"word = ?",new String[]{key},null,null,null);
ArrayList<Map<String, String>> resultList = new ArrayList<Map<String, String>>(); //创建ArrayList对象,用于保存查询出的结果
while (cursor.moveToNext()) { // 遍历Cursor结果集
Map<String, String> map = new HashMap<>(); // 将结果集中的数据存入HashMap中
// 取出查询记录中第2列、第3列的值
map.put("word", cursor.getString(1));
map.put("interpret", cursor.getString(2));
resultList.add(map); //将查询出的数据存入ArrayList中
}
if (resultList == null || resultList.size() == 0) { //如果数据库中没有数据
// 显示提示信息,没有相关记录
Toast.makeText(MainActivity.this, "很遗憾,没有相关记录!", Toast.LENGTH_LONG).show();
} else {
// 否则将查询的结果显示到ListView列表中
SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this, resultList,
R.layout.result_main,
new String[]{"word", "interpret"}, new int[]{
R.id.result_word, R.id.result_interpret});
listView.setAdapter(simpleAdapter);
}
}
});
}
@Override
protected void onDestroy() { //实现退出应用时,关闭数据库连接
super.onDestroy();
if (dbOpenHelper != null) { //如果数据库不为空时
dbOpenHelper.close(); //关闭数据库连接
}
}
}
Content Provider
public class MainActivity extends Activity {
private String columns = ContactsContract.Contacts.DISPLAY_NAME; //希望获得姓名
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.result); //获得布局文件中的TextView组件
tv.setText(getQueryData()); //为TextView设置数据
}
private CharSequence getQueryData() { //创建getQueryData()方法,实现获取通讯录信息
StringBuilder sb = new StringBuilder(); //用于保存字符串
ContentResolver resolver = getContentResolver(); //获得ContentResolver对象
//查询记录
Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
int displayNameIndex = cursor.getColumnIndex(columns); //获得姓名记录的索引值
//迭代全部记录
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
String displayName = cursor.getString(displayNameIndex);
sb.append(displayName + "\n");
}
cursor.close(); //关闭Cursor
return sb.toString(); //返回查询结果
}
}
更多推荐
已为社区贡献4条内容
所有评论(0)