1. 程式人生 > >android之SQLite資料庫操作通訊錄示例

android之SQLite資料庫操作通訊錄示例

SQLite資料庫操作通訊錄示例

PersonSQLiteOpenHelper.java

package com.itheima.person;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class PersonSQLiteOpenHelper extends SQLiteOpenHelper{
	public PersonSQLiteOpenHelper(Context context) {
		super(context,"person.db",null,5);}
	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL("create table person(id integer primary key autoincrement," +
				"name varchar(20)," +
				"number varchar(20))");
	}
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		db.execSQL("alter table person add account varchar(20)");
	}
}

ActivityMain.java

package com.example.txl;
import com.itheima.person.PersonSQLiteOpenHelper;
import android.app.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
public class MainActivity extends Activity {
	private PersonSQLiteOpenHelper person;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);    
        person=new PersonSQLiteOpenHelper(this);
        SQLiteDatabase db=person.getReadableDatabase();    
    }
    //跳轉到查詢頁面
    public void select(View view){
    	Intent intent=new Intent(this,SelectActivity.class);
    	startActivity(intent);
    }
    //跳轉到刪除頁面
    public void delect(View view){
    	Intent intent=new Intent(this,DelectActivity.class);
    	startActivity(intent);
    }
    //跳轉到刪除頁面
    public void xiugai(View view){
    	Intent intent=new Intent(this,XiugaiActivity.class);
    	startActivity(intent);
    }
    public void add(View view){
    	Intent intent=new Intent(this,AddActivity.class);
    	startActivity(intent);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }  
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@drawable/bg"
    tools:context="com.example.txl.MainActivity" >
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_marginTop="80dp"
        android:text="通 訊 錄"
        android:textSize="80sp" />
    <LinearLayout 
        android:id="@+id/layoutbutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true">
     <Button 
            android:onClick="select"
            android:id="@+id/b_select"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="檢視"/>
         <Button 
            android:onClick="add"
            android:id="@+id/b_add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="增加"/>
         <Button 
             android:onClick="xiugai"
            android:id="@+id/b_xiugai"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="修改"/>
          <Button 
              android:onClick="delect"
            android:id="@+id/b_delect"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="刪除"/>
    </LinearLayout>
</RelativeLayout>

SelecyActivity.java

package com.example.txl;
import com.itheima.person.PersonSQLiteOpenHelper;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class SelectActivity extends Activity {
	private PersonSQLiteOpenHelper person;
	String sname;
	private TextView name;
	private TextView number;
	private EditText selectname;
	private Button queding;
	String getname;
	String getnumber;
	SQLiteDatabase db;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.select);
		person=new PersonSQLiteOpenHelper(this);
		name=(TextView) findViewById(R.id.t_selectname2);
		number=(TextView) findViewById(R.id.t_selectnumber2);
		selectname=(EditText) findViewById(R.id.e_selectname2);
		queding=(Button) findViewById(R.id.b_selectqueding2);
		queding.setOnClickListener(new queding());}
	//返回響應
		public void selectfanhui(View view){
			Intent intent=new Intent(this,MainActivity.class);
			startActivity(intent);
		}
		//確定響應
		private class queding implements OnClickListener{
			@Override
			public void onClick(View v) {
				db=person.getReadableDatabase();
				sname=selectname.getText().toString().trim();
				Cursor cursor=db.query("person",null,"name=?", new String[]{sname}, null, null,null);
				while(cursor.moveToNext()){
					getname=cursor.getString(cursor.getColumnIndex("name"));
					getnumber=cursor.getString(cursor.getColumnIndex("number"));
				}
				if(getname==null){getname="查無此人!";}
				if(getnumber==null){getnumber="查無此號!";}
				name.setText(getname);
				number.setText(getnumber);
				cursor.close();
				db.close();			
			}
		}
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.select, menu);
		return true;
	}
	public boolean onOptionsItemSelected(MenuItem item) {
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
}

Select.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.txl.MainActivity" >
 <TextView
        android:id="@+id/t_selecttxl"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_marginTop="10dp"
        android:text="查詢通訊錄名單"
        android:textSize="30sp" />
 <LinearLayout 
        android:id="@+id/layoutselect"
        android:layout_below="@+id/t_selecttxl"
        android:layout_margin="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true">
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="輸入需要查詢的姓名:"
            android:textSize="20sp"/>
       <EditText 
            android:id="@+id/e_selectname2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="14sp"/>
    </LinearLayout>
   <LinearLayout 
        android:id="@+id/layoutname"
        android:layout_below="@+id/layoutselect"
        android:layout_margin="5dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true">
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="姓 名:"
            android:textSize="20sp"/>
        <TextView 
            android:id="@+id/t_selectname2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="名稱示例"
            android:textSize="20sp"/>
    </LinearLayout>
      <LinearLayout 
        android:id="@+id/layoutnumber"
        android:layout_below="@+id/layoutname"
        android:layout_margin="5dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true">
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="號 碼:"
            android:textSize="20sp"/>
         <TextView 
             android:id="@+id/t_selectnumber2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="號碼示例"
            android:textSize="20sp"/>
    </LinearLayout>
     <LinearLayout 
        android:id="@+id/layoutselectbutton"
        android:layout_below="@+id/layoutnumber"
        android:layout_margin="5dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true">
        <Button 
            android:id="@+id/b_selectqueding2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="查詢"/>
         <Button 
             android:onClick="selectfanhui"
            android:id="@+id/b_selectfanhui"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="返回"/>
    </LinearLayout>
</RelativeLayout>

AddActivity.java

package com.example.txl;
import com.itheima.person.PersonSQLiteOpenHelper;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class AddActivity extends Activity {
	String sname;
	String snumber;
	private PersonSQLiteOpenHelper person;
	private EditText name;
	private EditText number;
	private Button queding;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.add);
		person=new PersonSQLiteOpenHelper(this);
		name=(EditText) findViewById(R.id.e_select_name);
		number=(EditText) findViewById(R.id.e_select_number);
		queding=(Button) findViewById(R.id.b_selectqueding);
		queding.setOnClickListener(new queding());
	}
	//返回響應
	public void selectfanhui(View view){
		Intent intent=new Intent(this,MainActivity.class);
		startActivity(intent);
	}
	//確定響應事件
	private class queding implements OnClickListener{
		public void onClick(View v) {
			sname=name.getText().toString().trim();
			snumber=number.getText().toString().trim();
			SQLiteDatabase db=person.getWritableDatabase();
			ContentValues values=new ContentValues();
			values.put("name",sname);
			values.put("number",snumber);
			db.insert("person",null, values);
			db.close();	
			Toast.makeText(AddActivity.this,"成功插入資料",0).show();
		}
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.add, menu);
		return true;
	}
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item); }}

Add.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.txl.MainActivity" >
 <TextView
        android:id="@+id/t_addtxl"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_marginTop="10dp"
        android:text="增加通訊錄名單"
        android:textSize="30sp" />
   <LinearLayout 
        android:id="@+id/layoutname"
        android:layout_below="@+id/t_addtxl"
        android:layout_margin="5dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true">
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="姓 名:"
            android:textSize="20sp"/>
        <EditText 
            android:id="@+id/e_select_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="14sp"/>
    </LinearLayout>
      <LinearLayout 
        android:id="@+id/layoutnumber"
        android:layout_below="@+id/layoutname"
        android:layout_margin="5dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true">
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="號 碼:"
            android:textSize="20sp"/>
        <EditText 
            android:id="@+id/e_select_number"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="14sp"/>
    </LinearLayout>
     <LinearLayout 
        android:id="@+id/layoutselectbutton"
        android:layout_below="@+id/layoutnumber"
        android:layout_margin="5dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true">
        <Button 
            android:id="@+id/b_selectqueding"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="確定"/>
         <Button 
             android:onClick="selectfanhui"
            android:id="@+id/b_selectfanhui"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="返回"/>
    </LinearLayout>
</RelativeLayout>

XiugaiActivity.java

package com.example.txl;
import com.itheima.person.PersonSQLiteOpenHelper;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class XiugaiActivity extends Activity {
	private PersonSQLiteOpenHelper person;
	private EditText name;
	private EditText number;
	private String sname;
	private String snumber;
	private Button queding;
	SQLiteDatabase db;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.xiugai);
		person=new PersonSQLiteOpenHelper(this);
		name=(EditText) findViewById(R.id.e_xiugai_name);
		number=(EditText) findViewById(R.id.e_xiugai_number);
		queding=(Button) findViewById(R.id.b_xiugaiqueding);
		queding.setOnClickListener(new queding());
	}
	//返回響應
	public void xiugaifanhui(View view){
		Intent intent=new Intent(this,MainActivity.class);
		startActivity(intent);
	}
	//修改響應
	private class queding implements OnClickListener{
		@Override
		public void onClick(View v) {
			snumber=number.getText().toString().trim();
			sname=name.getText().toString().trim();
			db=person.getWritableDatabase();
			ContentValues values=new ContentValues();
			values.put("number",snumber);
			db.update("person",values, "name=?",new String[]{sname});
			db.close();
			Toast.makeText(XiugaiActivity.this,"成功修改"+sname+"的資料",0).show();
		}
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.xiugai, menu);
		return true;
	}
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
}

Xiugai.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.txl.MainActivity" >
 <TextView
        android:id="@+id/t_xiugaitxl"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_marginTop="10dp"
        android:text="修改通訊錄名單"
        android:textSize="30sp" />
   <LinearLayout 
        android:id="@+id/layoutname"
        android:layout_below="@+id/t_xiugaitxl"
        android:layout_margin="5dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true">
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="需要修改物件的姓名:"
            android:textSize="20sp"/>
        <EditText 
            android:id="@+id/e_xiugai_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="14sp"/>
    </LinearLayout>
      <LinearLayout 
        android:id="@+id/layoutnumber"
        android:layout_below="@+id/layoutname"
        android:layout_margin="5dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true">
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="修改物件的電話號碼:"
            android:textSize="20sp"/>
        <EditText 
            android:id="@+id/e_xiugai_number"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="14sp"/>
    </LinearLayout>
     <LinearLayout 
        android:id="@+id/layoutselectbutton"
        android:layout_below="@+id/layoutnumber"
        android:layout_margin="5dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true">
        <Button 
            android:id="@+id/b_xiugaiqueding"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="修改"/>
         <Button 
             android:onClick="xiugaifanhui"
            android:id="@+id/b_selectfanhui"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="返回"/>
    </LinearLayout>
       </RelativeLayout>

DelectActivity.java

package com.example.txl;
import com.itheima.person.PersonSQLiteOpenHelper;
import android.app.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class DelectActivity extends Activity {
	private EditText name;
	private Button queding;
	private PersonSQLiteOpenHelper person;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.delect);
		person=new PersonSQLiteOpenHelper(this);
		name=(EditText) findViewById(R.id.e_delect_name);
		queding=(Button) findViewById(R.id.b_delectqueding);
		queding.setOnClickListener(new queding());
	}
	//返回響應
	public void delectfanhui(View view){
		Intent intent=new Intent(this,MainActivity.class);
		startActivity(intent);
	}
	//刪除響應
	private class queding implements OnClickListener{
		@Override
		public void onClick(View v) {
			String sname=name.getText().toString().trim();
			SQLiteDatabase db=person.getWritableDatabase();
			int number=db.delete("person", "name=?", new String[]{sname});
			db.close();
			Toast.makeText(DelectActivity.this,"成功刪除"+sname+"的資料",0).show();
		}
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.delect, menu);
		return true;
	}
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
}

Delect.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.txl.MainActivity" >
 <TextView
        android:id="@+id/t_delecttxl"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_marginTop="10dp"
        android:text="刪除通訊錄名單"
        android:textSize="30sp" />
   <LinearLayout 
        android:id="@+id/layoutname"
        android:layout_below="@+id/t_delecttxl"
        android:layout_margin="5dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="請輸入您需要刪除的通訊錄姓名:"
            android:textSize="18sp"/>
    </LinearLayout>
   <LinearLayout 
        android:id="@+id/layoutdelect"
        android:layout_below="@+id/layoutname"
        android:layout_margin="5dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText 
            android:id="@+id/e_delect_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="18sp"/>
    </LinearLayout>
     <LinearLayout 
        android:id="@+id/layoutdelectbutton"
        android:layout_below="@+id/layoutdelect"
        android:layout_margin="5dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true">
        <Button 
            android:id="@+id/b_delectqueding"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="刪除"/>
         <Button 
             android:onClick="delectfanhui"
            android:id="@+id/b_selectfanhui"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="返回"/>
    </LinearLayout>
</RelativeLayout>

整體介面
新增
查詢
修改
修改後
刪除
刪除後查詢