文档库 最新最全的文档下载
当前位置:文档库 › Android数据存储和数据访问要点

Android数据存储和数据访问要点

南昌航空大学实验报告

二0一4 年11 月14 日

课程名称:Android 实验名称:Android数据存储和数据访问

班级:姓名:同组人:

指导教师评定:签名:

一:实验目的

掌握SharedPreferences的使用方法;

掌握各种文件存储的区别与适用情况;

了解SQLite数据库的特点和体系结构;

掌握SQLite数据库的建立和操作方法;

理解ContentProvider的用途和原理;

掌握ContentProvider的创建与使用方法

二:实验工具

Eclipse(MyEclipse)+ ADT + Android2.2 SDK;

三:实验题目

1.应用程序一般允许用户自己定义配置信息,如界面背景颜色、字体大小和字体颜色等,尝试使用SharedPreferences保存用户的自定义配置信息,并在程序启动时自动加载这些自定义的配置信息。

2.尝试把第1题的用户自己定义配置信息,以INI文件的形式保存在内部存储器上。

3.使用代码建库的方式,创建名为test.db的数据库,并建立staff数据表,表内的属性值如下表所示:

属性数据类型说明

_id integer 主键

name text 姓名

sex text 性别

department text 所在部门

salary float 工资实验目的

掌握SharedPreferences的使用方法;

掌握各种文件存储的区别与适用情况;

了解SQLite数据库的特点和体系结构;

掌握SQLite数据库的建立和操作方法;

理解ContentProvider的用途和原理;

掌握ContentProvider的创建与使用方法

实验工具

Eclipse(MyEclipse)+ ADT

+ Android2.2 SDK;

实验题目

1.应用程序一般允许用户自己定义配置信息,如界面背景颜色、字体大小和字体颜色等,尝试使用SharedPreferences保存用户的自定义配置信息,并在程序启动时自动加载这些自定义的配置信息。

2.尝试把第1题的用户自己定义配置信息,以INI文件的形式保存在内部存储器上。

3.使用代码建库的方式,创建名为test.db的数据库,并建立staff 数据表,表内的属性值如下表所示:数据类型说明

_id integer 主键

name text 姓名

sex text 性别

department text 所在部门

salary float 工资

4.建立一个

ContentProvider,用来共享第3

题所建立的数据库;

4.建立一个ContentProvider,用来共享第3题所建立的数据库;

四:实验代码

InternalFileDemo

public class InternalFileDemo extends Activity {

private final String FILE_NAME = "fileDemo.txt";

private TextView labelView;

private TextView displayView;

private CheckBox appendBox ;

private EditText entryText;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.wendangku.net/doc/9514341866.html,yout.main);

labelView = (TextView)findViewById(https://www.wendangku.net/doc/9514341866.html,bel);

displayView = (TextView)findViewById(R.id.display);

appendBox = (CheckBox)findViewById(R.id.append);

entryText = (EditText)findViewById(R.id.entry);

Button writeButton = (Button)findViewById(R.id.write);

Button readButton = (Button)findViewById(R.id.read);

writeButton.setOnClickListener(writeButtonListener);

readButton.setOnClickListener(readButtonListener);

entryText.selectAll();

entryText.findFocus();

}

OnClickListener writeButtonListener = new OnClickListener() {

@Override

public void onClick(View v) {

FileOutputStream fos = null;

try {

if (appendBox.isChecked()){

fos = openFileOutput(FILE_NAME,Context.MODE_APPEND);

}

else {

fos =

openFileOutput(FILE_NAME,Context.MODE_PRIVATE);

}

String text = entryText.getText().toString();

fos.write(text.getBytes());

labelView.setText("文件写入成功,写入长度:"+text.length());

entryText.setText("");

} catch (FileNotFoundException e) {

e.printStackTrace();

}

catch (IOException e) {

e.printStackTrace();

}

finally{

if (fos != null){

try {

fos.flush();

fos.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

};

OnClickListener readButtonListener = new OnClickListener() { @Override

public void onClick(View v) {

displayView.setText("");

FileInputStream fis = null;

try {

fis = openFileInput(FILE_NAME);

if (fis.available() == 0){

return;

}

byte[] readBytes = new byte[fis.available()];

while(fis.read(readBytes) != -1){

}

String text = new String(readBytes);

displayView.setText(text);

labelView.setText("文件读取成功,文件长度:"+text.length());

} catch (FileNotFoundException e) {

e.printStackTrace();

}

catch (IOException e) {

e.printStackTrace();

}

}

};

}

SimplePreferenceDemo

public class SimplePreferenceDemo extends Activity {

private EditText nameText;

private EditText ageText;

private EditText heightText;

public static final String PREFERENCE_NAME = "SaveSetting";

public static int MODE = Context.MODE_WORLD_READABLE +

Context.MODE_WORLD_WRITEABLE;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.wendangku.net/doc/9514341866.html,yout.main);

nameText = (EditText)findViewById(https://www.wendangku.net/doc/9514341866.html,);

ageText = (EditText)findViewById(R.id.age);

heightText = (EditText)findViewById(R.id.height);

}

@Override

public void onStart(){

s uper.onStart();

l oadSharedPreferences();

}

@Override

public void onStop(){

s uper.onStop();

s aveSharedPreferences();

}

private void loadSharedPreferences(){

SharedPreferences sharedPreferences =

getSharedPreferences(PREFERENCE_NAME, MODE);

String name = sharedPreferences.getString("Name","Tom");

int age = sharedPreferences.getInt("Age", 20);

float height = sharedPreferences.getFloat("Height",1.81f);

nameText.setText(name);

ageText.setText(String.valueOf(age));

heightText.setText(String.valueOf(height));

}

private void saveSharedPreferences(){

SharedPreferences sharedPreferences =

getSharedPreferences(PREFERENCE_NAME, MODE);

SharedPreferences.Editor editor = sharedPreferences.edit();

editor.putString("Name", nameText.getText().toString());

editor.putInt("Age",

Integer.parseInt(ageText.getText().toString()));

editor.putFloat("Height",

Float.parseFloat(heightText.getText().toString()));

https://www.wendangku.net/doc/9514341866.html,mit();

}

}

SQLiteDemo

DBAdapter.java

public class DBAdapter {

private static final String DB_NAME = "people.db";

private static final String DB_TABLE = "peopleinfo";

private static final int DB_VERSION = 1;

public static final String KEY_ID = "_id";

public static final String KEY_NAME = "name";

public static final String KEY_AGE = "age";

public static final String KEY_HEIGHT = "height";

private SQLiteDatabase db;

private final Context context;

private DBOpenHelper dbOpenHelper;

public DBAdapter(Context _context) {

context = _context;

}

/** Close the database */

public void close() {

if (db != null){

db.close();

db = null;

}

}

/** Open the database */

public void open() throws SQLiteException {

dbOpenHelper = new DBOpenHelper(context, DB_NAME, null, DB_VERSION);

try {

db = dbOpenHelper.getWritableDatabase();

}

catch (SQLiteException ex) {

db = dbOpenHelper.getReadableDatabase();

}

}

public long insert(People people) {

ContentValues newValues = new ContentValues();

newValues.put(KEY_NAME, https://www.wendangku.net/doc/9514341866.html,);

newValues.put(KEY_AGE, people.Age);

newValues.put(KEY_HEIGHT, people.Height);

return db.insert(DB_TABLE, null, newValues);

}

public People[] queryAllData() {

Cursor results = db.query(DB_TABLE, new String[] { KEY_ID, KEY_NAME, KEY_AGE, KEY_HEIGHT},

null, null, null, null, null);

return ConvertToPeople(results);

}

public People[] queryOneData(long id) {

Cursor results = db.query(DB_TABLE, new String[] { KEY_ID, KEY_NAME, KEY_AGE, KEY_HEIGHT},

KEY_ID + "=" + id, null, null, null, null);

return ConvertToPeople(results);

}

private People[] ConvertToPeople(Cursor cursor){

int resultCounts = cursor.getCount();

if (resultCounts == 0 || !cursor.moveToFirst()){

return null;

}

People[] peoples = new People[resultCounts];

for (int i = 0 ; i

peoples[i] = new People();

peoples[i].ID = cursor.getInt(0);

peoples[i].Name =

cursor.getString(cursor.getColumnIndex(KEY_NAME));

peoples[i].Age =

cursor.getInt(cursor.getColumnIndex(KEY_AGE));

peoples[i].Height =

cursor.getFloat(cursor.getColumnIndex(KEY_HEIGHT));

cursor.moveToNext();

}

return peoples;

}

public long deleteAllData() {

return db.delete(DB_TABLE, null, null);

}

public long deleteOneData(long id) {

return db.delete(DB_TABLE, KEY_ID + "=" + id, null);

}

public long updateOneData(long id , People people){

ContentValues updateValues = new ContentValues();

updateValues.put(KEY_NAME, https://www.wendangku.net/doc/9514341866.html,);

updateValues.put(KEY_AGE, people.Age);

updateValues.put(KEY_HEIGHT, people.Height);

return db.update(DB_TABLE, updateValues, KEY_ID + "=" + id, null);

}

/** 静态Helper类,用于建立、更新和打开数据库*/

private static class DBOpenHelper extends SQLiteOpenHelper {

public DBOpenHelper(Context context, String name, CursorFactory factory, int version) {

super(context, name, factory, version);

}

private static final String DB_CREATE = "create table " +

DB_TABLE+ " ("+ KEY_ID+ " integer primary key autoincrement, " +

KEY_NAME+ " text not null, "+ KEY_AGE+ " integer,"+ KEY_HEIGHT + " float);";

@Override

public void onCreate(SQLiteDatabase _db) {

_db.execSQL(DB_CREATE);

}

@Override

public void onUpgrade(SQLiteDatabase _db, int_oldVersion, int _newVersion) {

_db.execSQL("DROP TABLE IF EXISTS " + DB_TABLE);

onCreate(_db);

}

}

}

People.java

public class People {

public int ID = -1;

public String Name;

public int Age;

public float Height;

@Override

public String toString(){

String result = "";

result += "ID:" + this.ID + ",";

result += "姓名:" + https://www.wendangku.net/doc/9514341866.html, + ",";

result += "年龄:" + this.Age + ", ";

result += "身高:" + this.Height + ",";

return result;

}

}

SQLiteDemo.java

public class SQLiteDemo extends Activity {

/** Called when the activity is first created. */

private DBAdapter dbAdepter ;

private EditText nameText;

private EditText ageText;

private EditText heightText;

private EditText idEntry;

private TextView labelView;

private TextView displayView;

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(https://www.wendangku.net/doc/9514341866.html,yout.main);

nameText = (EditText)findViewById(https://www.wendangku.net/doc/9514341866.html,);

ageText = (EditText)findViewById(R.id.age);

heightText = (EditText)findViewById(R.id.height);

idEntry = (EditText)findViewById(R.id.id_entry);

labelView = (TextView)findViewById(https://www.wendangku.net/doc/9514341866.html,bel);

displayView = (TextView)findViewById(R.id.display);

Button addButton = (Button)findViewById(R.id.add);

Button queryAllButton = (Button)findViewById(R.id.query_all); Button clearButton = (Button)findViewById(R.id.clear);

Button deleteAllButton = (Button)findViewById(R.id.delete_all);

Button queryButton = (Button)findViewById(R.id.query);

Button deleteButton = (Button)findViewById(R.id.delete);

Button updateButton = (Button)findViewById(R.id.update);

addButton.setOnClickListener(addButtonListener);

queryAllButton.setOnClickListener(queryAllButtonListener);

clearButton.setOnClickListener(clearButtonListener);

deleteAllButton.setOnClickListener(deleteAllButtonListener);

queryButton.setOnClickListener(queryButtonListener);

deleteButton.setOnClickListener(deleteButtonListener);

updateButton.setOnClickListener(updateButtonListener);

dbAdepter = new DBAdapter(this);

dbAdepter.open();

}

OnClickListener addButtonListener = new OnClickListener() { @Override

public void onClick(View v) {

People people = new People();

https://www.wendangku.net/doc/9514341866.html, = nameText.getText().toString();

people.Age =

Integer.parseInt(ageText.getText().toString());

people.Height =

Float.parseFloat(heightText.getText().toString());

long colunm = dbAdepter.insert(people);

if (colunm == -1 ){

labelView.setText("添加过程错误!");

} else {

labelView.setText("成功添加数据,ID:

"+String.valueOf(colunm));

}

}

};

OnClickListener queryAllButtonListener = new OnClickListener() { @Override

public void onClick(View v) {

People[] peoples = dbAdepter.queryAllData();

if (peoples == null){

labelView.setText("数据库中没有数据");

return;

}

labelView.setText("数据库:");

String msg = "";

for (int i = 0 ; i

msg += peoples[i].toString()+"\n";

}

displayView.setText(msg);

}

};

OnClickListener clearButtonListener = new OnClickListener() {

@Override

public void onClick(View v) {

displayView.setText("");

}

};

OnClickListener deleteAllButtonListener = new OnClickListener() { @Override

public void onClick(View v) {

dbAdepter.deleteAllData();

String msg = "数据全部删除";

labelView.setText(msg);

}

};

OnClickListener queryButtonListener = new OnClickListener() { @Override

public void onClick(View v) {

int id = Integer.parseInt(idEntry.getText().toString());

People[] peoples = dbAdepter.queryOneData(id);

if (peoples == null){

labelView.setText("数据库中没有ID为"+String.valueOf(id)+"的数据");

return;

}

labelView.setText("数据库:");

displayView.setText(peoples[0].toString());

}

};

OnClickListener deleteButtonListener = new OnClickListener() { @Override

public void onClick(View v) {

long id = Integer.parseInt(idEntry.getText().toString());

long result = dbAdepter.deleteOneData(id);

String msg = "删除ID为"+idEntry.getText().toString()+"的数据" + (result>0?"成功":"失败");

labelView.setText(msg);

}

};

OnClickListener updateButtonListener = new OnClickListener() { @Override

public void onClick(View v) {

People people = new People();

https://www.wendangku.net/doc/9514341866.html, = nameText.getText().toString();

people.Age =

Integer.parseInt(ageText.getText().toString());

people.Height =

Float.parseFloat(heightText.getText().toString());

long id = Integer.parseInt(idEntry.getText().toString());

long count = dbAdepter.updateOneData(id, people);

if (count == -1 ){

labelView.setText("更新错误!");

} else {

labelView.setText("更新成功,更新数据

"+String.valueOf(count)+"条");

}

}

};

}

相关文档
相关文档 最新文档