標籤:android 資料庫 內建資料庫 sqlite操作
開發過程中使用Android內建的資料庫,不僅安全性較好,而且資料存取的效果也較好。
附原始碼
http://download.csdn.net/detail/wyx100/8670843
開發規劃 主介面
完成資料的輸入,觸發儲存
啟動後介面
輸入資料
資料顯示介面
資料庫讀取資料後顯示
刪除記錄
開發順序主介面
類代碼
package com.example.sqlitetest;import android.os.Bundle;import android.app.Activity;import android.content.ContentValues;import android.content.Intent;import android.view.View;import android.widget.Button;import android.widget.EditText;public class ActivityMain_1 extends Activity {//聲明EditText執行個體private EditText et1,et2,et3;//聲明Button執行個體private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.main_1);//根據ID獲得執行個體對象et1 = (EditText) findViewById(R.id.EditText01);et2 = (EditText) findViewById(R.id.EditText02);et3 = (EditText) findViewById(R.id.EditText03);button = (Button) findViewById(R.id.button);//事件button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String name=et1.getText().toString();String url =et2.getText().toString();String desc = et3.getText().toString();ContentValues values = new ContentValues();values.put("name", name);values.put("url", url);values.put("desc", desc);//執行個體化資料庫協助類DBHelper helper = new DBHelper(getApplicationContext());//開啟資料庫helper.open(); //插入資料helper.insert(values);//執行個體化IntentIntent intent = new Intent(ActivityMain_1.this,QueryActivity.class);startActivity(intent);helper.close();}});}}
介面布局
<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:id="@+id/TextView01"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="網站名稱"/><EditTextandroid:id="@+id/EditText01"android:layout_width="fill_parent"android:layout_height="wrap_content"/><TextViewandroid:id="@+id/TextView02"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="URL"/><EditTextandroid:id="@+id/EditText02"android:layout_width="fill_parent"android:layout_height="wrap_content"/><TextViewandroid:id="@+id/TextView03"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="網站描述"/><EditTextandroid:id="@+id/EditText03"android:layout_width="fill_parent"android:layout_height="wrap_content"android:height="100px"/><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="添加"/></LinearLayout>
2.資料顯示介面
類代碼
package com.example.sqlitetest;import android.app.AlertDialog;import android.app.ListActivity;import android.content.DialogInterface;import android.database.Cursor;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.SimpleCursorAdapter;public class QueryActivity extends ListActivity {private ListView listView;private Cursor c; @Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);//setContentView(R.layout.row);//執行個體化資料庫協助類final DBHelper help = new DBHelper(this);help.open();c= help.query(); query();//提示對話方塊final AlertDialog.Builder builder = new AlertDialog.Builder(this);listView.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {final long temp = id;builder.setMessage("真的要刪除該條記錄嗎?").setPositiveButton("是", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {System.out.println("yes");help.del((int)temp);//重新查詢//query();Cursor c = help.query();//清單項目數組String[] from ={"_id","name","url","desc"};//清單項目IDint[] to ={R.id.text0,R.id.text1,R.id.text2,R.id.text3};//適配器SimpleCursorAdapter adapter = new SimpleCursorAdapter(getApplicationContext(),R.layout.row,c,from,to);ListView listView = getListView();listView.setAdapter(adapter);}}).setNegativeButton("否", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});builder.create();builder.show();}});}@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();}public void query(){//清單項目數組String[] from ={"_id","name","url","desc"};//清單項目IDint[] to ={R.id.text0,R.id.text1,R.id.text2,R.id.text3};//適配器SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.row,c,from,to);//adapter.notifyDataSetChanged();//列表視圖 listView = getListView();//為列表視圖添加適配器listView.setAdapter(adapter);}}
介面布局
<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_gravity="center_vertical"><TextViewandroid:id="@+id/text0"android:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingRight="10px"/><TextViewandroid:id="@+id/text1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingRight="10px"/><TextViewandroid:id="@+id/text2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingRight="10px"/><TextViewandroid:id="@+id/text3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingRight="10px"/></LinearLayout>
資料庫處理類
package com.example.sqlitetest;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class DBHelper extends SQLiteOpenHelper {private static final String DB_NAME="coll.db";//????private static final String TBL_NAME="logtable";//????SQL???private static final String CREATE_TBL = "create table logtable " +"(_id integer primary key autoincrement,name text,url text,desc text)";//SQLiteDatabase???private SQLiteDatabase db;public DBHelper(Context context) {super(context, DB_NAME, null, 2);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(CREATE_TBL);}//??????public void open(){db = getWritableDatabase();}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stub}//??????public void insert(ContentValues values){db.insert(TBL_NAME, null, values);}//???????public Cursor query(){Cursor c = db.query(TBL_NAME, null, null, null, null, null, null);return c;}//???public void del(int id){db.delete(TBL_NAME, "_id=?", new String[]{String.valueOf(id)});}//???????public void close(){if (db != null){db.close();}}}
啟動設定檔
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.sqlitetest" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.sqlitetest.ActivityMain_1" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.sqlitetest.QueryActivity"></activity> </application></manifest>
android資料庫 Android內建資料庫SQLite 操作 一步一步 圖示教程