版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、南昌航空大學(xué)實(shí)驗(yàn)報(bào)告二0一4 年 11 月 14 日課程名稱: Android 實(shí)驗(yàn)名稱: Android數(shù)據(jù)存儲和數(shù)據(jù)訪問 班級: 姓名: 同組人: 指導(dǎo)教師評定: 簽名: 一:實(shí)驗(yàn)?zāi)康恼莆誗haredPreferences的使用方法;掌握各種文件存儲的區(qū)別與適用情況;了解SQLite數(shù)據(jù)庫的特點(diǎn)和體系結(jié)構(gòu);掌握SQLite數(shù)據(jù)庫的建立和操作方法;理解ContentProvider的用途和原理;掌握ContentProvider的創(chuàng)建與使用方法二:實(shí)驗(yàn)工具Eclipse(MyEclipse)+ ADT + Android2.2 SDK;三:實(shí)驗(yàn)題目1.應(yīng)用程序一般允許用戶自己定義配置信息,如
2、界面背景顏色、字體大小和字體顏色等,嘗試使用SharedPreferences保存用戶的自定義配置信息,并在程序啟動時(shí)自動加載這些自定義的配置信息。2.嘗試把第1題的用戶自己定義配置信息,以INI文件的形式保存在內(nèi)部存儲器上。3.使用代碼建庫的方式,創(chuàng)建名為test.db的數(shù)據(jù)庫,并建立staff數(shù)據(jù)表,表內(nèi)的屬性值如下表所示:屬性數(shù)據(jù)類型說明_idinteger主鍵nametext姓名sextext性別departmenttext所在部門salaryfloat工資實(shí)驗(yàn)?zāi)康恼莆誗haredPreferences的使用方法;掌握各種文件存儲的區(qū)別與適用情況;了解SQLite數(shù)據(jù)庫的特點(diǎn)和體系結(jié)構(gòu)
3、;掌握SQLite數(shù)據(jù)庫的建立和操作方法;理解ContentProvider的用途和原理;掌握ContentProvider的創(chuàng)建與使用方法實(shí)驗(yàn)工具Eclipse(MyEclipse)+ ADT + Android2.2 SDK;實(shí)驗(yàn)題目1.應(yīng)用程序一般允許用戶自己定義配置信息,如界面背景顏色、字體大小和字體顏色等,嘗試使用SharedPreferences保存用戶的自定義配置信息,并在程序啟動時(shí)自動加載這些自定義的配置信息。2.嘗試把第1題的用戶自己定義配置信息,以INI文件的形式保存在內(nèi)部存儲器上。3.使用代碼建庫的方式,創(chuàng)建名為test.db的數(shù)據(jù)庫,并建立staff數(shù)據(jù)表,表內(nèi)的屬性值
4、如下表所示:屬性數(shù)據(jù)類型說明_idinteger主鍵nametext姓名sextext性別departmenttext所在部門salaryfloat工資4. 建立一個ContentProvider,用來共享第3題所建立的數(shù)據(jù)庫;4. 建立一個ContentProvider,用來共享第3題所建立的數(shù)據(jù)庫;四:實(shí)驗(yàn)代碼InternalFileDemopublic class InternalFileDemo extends Activity private final String FILE_NAME = "fileDemo.txt"private TextView label
5、View;private TextView displayView;private CheckBox appendBox ;private EditText entryText; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); labelView = (TextView)findViewById(R.id.label); displayView = (TextView)findViewById(R
6、.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.setOnClickListene
7、r(readButtonListener); entryText.selectAll(); entryText.findFocus(); OnClickListener writeButtonListener = new OnClickListener() Overridepublic void onClick(View v) FileOutputStream fos = null; try if (appendBox.isChecked() fos = openFileOutput(FILE_NAME,Context.MODE_APPEND); else fos = openFileOutp
8、ut(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();finall
9、yif (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.availab
10、le() = 0)return;byte readBytes = new bytefis.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
11、(); ; SimplePreferenceDemopublic 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_W
12、RITEABLE; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); nameText = (EditText)findViewById(R.); ageText = (EditText)findViewById(R.id.age); heightText = (EditText)findViewById(R.id.height); Override public void onSta
13、rt() super.onStart(); loadSharedPreferences(); Override public void onStop() super.onStop(); saveSharedPreferences(); private void loadSharedPreferences() SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCE_NAME, MODE); String name = sharedPreferences.getString("Name",&qu
14、ot;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
15、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&qu
16、ot;, Float.parseFloat(heightText.getText().toString(); mit(); SQLiteDemopublic 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 = "_i
17、d"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) cont
18、ext = _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 (SQLiteExcepti
19、on ex) db = dbOpenHelper.getReadableDatabase(); public long insert(People people) ContentValues newValues = new ContentValues(); newValues.put(KEY_NAME, people.Name); newValues.put(KEY_AGE, people.Age); newValues.put(KEY_HEIGHT, people.Height); return db.insert(DB_TABLE, null, newValues); public Peo
20、ple 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 +
21、"=" + 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 PeopleresultCounts; for (int i = 0 ; i<resultCounts; i+)
22、 peoplesi = new People(); peoplesi.ID = cursor.getInt(0); peoplesi.Name = cursor.getString(cursor.getColumnIndex(KEY_NAME); peoplesi.Age = cursor.getInt(cursor.getColumnIndex(KEY_AGE); peoplesi.Height = cursor.getFloat(cursor.getColumnIndex(KEY_HEIGHT); cursor.moveToNext(); return peoples; public lo
23、ng 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, people.Name); u
24、pdateValues.put(KEY_AGE, people.Age); updateValues.put(KEY_HEIGHT, people.Height); return db.update(DB_TABLE, updateValues, KEY_ID + "=" + id, null); /* 靜態(tài)Helper類,用于建立、更新和打開數(shù)據(jù)庫*/ private static class DBOpenHelper extends SQLiteOpenHelper public DBOpenHelper(Context context, String name, Cu
25、rsorFactory 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,"
26、; + 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); public class People public in
27、t ID = -1;public String Name;public int Age;public float Height;Overridepublic String toString()String result = ""result += "ID:" + this.ID + ","result += "姓名:" + this.Name + ","result += "年齡:" + this.Age + ", "result += "身高:
28、" + this.Height + ","return result;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;p
29、rivate TextView displayView; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); nameText = (EditText)findViewById(R.); ageText = (EditText)findViewById(R.id.age); heightText = (EditText)findViewById(R.id.height); idEntry
30、 = (EditText)findViewById(R.id.id_entry); labelView = (TextView)findViewById(R.id.label); 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.i
31、d.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); queryAll
32、Button.setOnClickListener(queryAllButtonListener); clearButton.setOnClickListener(clearButtonListener); deleteAllButton.setOnClickListener(deleteAllButtonListener); queryButton.setOnClickListener(queryButtonListener); deleteButton.setOnClickListener(deleteButtonListener); updateButton.setOnClickList
33、ener(updateButtonListener); dbAdepter = new DBAdapter(this); dbAdepter.open(); OnClickListener addButtonListener = new OnClickListener() Overridepublic void onClick(View v) People people = new People();people.Name = nameText.getText().toString();people.Age = Integer.parseInt(ageText.getText().toStri
34、ng();people.Height = Float.parseFloat(heightText.getText().toString();long colunm = dbAdepter.insert(people);if (colunm = -1 )labelView.setText("添加過程錯誤!"); else labelView.setText("成功添加數(shù)據(jù),ID:"+String.valueOf(colunm); ; OnClickListener queryAllButtonListener = new OnClickListener()
35、 Overridepublic void onClick(View v) People peoples = dbAdepter.queryAllData();if (peoples = null)labelView.setText("數(shù)據(jù)庫中沒有數(shù)據(jù)");return;labelView.setText("數(shù)據(jù)庫:");String msg = ""for (int i = 0 ; i<peoples.length; i+)msg += peoplesi.toString()+"n"displayView.s
36、etText(msg); ; OnClickListener clearButtonListener = new OnClickListener() Overridepublic void onClick(View v) displayView.setText(""); ; OnClickListener deleteAllButtonListener = new OnClickListener() Overridepublic void onClick(View v) dbAdepter.deleteAllData();String msg = "數(shù)據(jù)全部刪除"labelView.setText(msg); ; OnClickListener queryButtonListener = new OnClic
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電商物流綠色倉儲解決方案
- 電動汽車充電設(shè)施建設(shè)合同
- 電力行業(yè)智能電網(wǎng)與電力調(diào)度系統(tǒng)方案
- 2024-2030年中國空調(diào)板行業(yè)市場運(yùn)行分析及發(fā)展趨勢與投資方向研究報(bào)告
- 2024-2030年中國空氣油分離器行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報(bào)告
- 2024-2030年中國穩(wěn)壓變壓器行業(yè)市場深度調(diào)研及發(fā)展前景與投資風(fēng)險(xiǎn)研究報(bào)告
- 2024-2030年中國移動式輸送機(jī)行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報(bào)告
- 2024-2030年中國秸稈板行業(yè)風(fēng)險(xiǎn)評估與未來應(yīng)用趨勢建議研究報(bào)告
- 2024-2030年中國磷酸硼市場深度調(diào)查與未來前景預(yù)測分析研究報(bào)告
- 2024-2030年中國磁力泵市場規(guī)模預(yù)測及未來發(fā)展前景分析研究報(bào)告
- GA/T 1073-2013生物樣品血液、尿液中乙醇、甲醇、正丙醇、乙醛、丙酮、異丙醇和正丁醇的頂空-氣相色譜檢驗(yàn)方法
- 【課件】八年級家長會課件“轉(zhuǎn)彎處”的愛PPT
- 中學(xué)學(xué)生一日常規(guī)細(xì)則
- 首長保健手冊(下)-精選
- 5羥色胺再攝取抑制劑對心血管系統(tǒng)的影響
- 數(shù)學(xué)教師個人教學(xué)風(fēng)格總結(jié)
- 卓資縣二中意識形態(tài)工作風(fēng)險(xiǎn)排查情況匯總表
- 四年級下冊美術(shù)教案-9用彩墨畫魚-人美版
- 公司戰(zhàn)略規(guī)劃和落地方法之:五看三定工具解析課件
- 基礎(chǔ)教育改革專題課件
- 茶樹種植課件
評論
0/150
提交評論