1.DbOpenHelper
package com.example.dbtest.dbHelper; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; //继承SQLiteOpenHelper类 public class DbOpenHelper extends SQLiteOpenHelper { public DbOpenHelper(Context context) { //Context 上下文 //name 数据库名 //CursorFactory 游标工厂模式 当为null时 使用默认值 //version 数据库版本 版本号从1开始 super(context, "test.db", null, 1); } /** * 第一次访问数据库 执行方法 * */ @Override public void onCreate(SQLiteDatabase db) { //创建表结构 String sql = "create table person(id integer primary key autoincrement,name varchar(20),age int,phone varchar(11))"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
2.实体
package com.example.dbtest.domain; public class Person { private int id; private String name; private int age; private String phone; public Person(){} public Person(int id, String name, int age, String phone) { super(); this.id = id; this.name = name; this.age = age; this.phone = phone; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } @Override public String toString() { return "个人信息[id=" + id + ", name=" + name + ", age=" + age + ", phone=" + phone + "]"; } }
3.personDao
package com.example.dbtest.dao; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.example.dbtest.dbHelper.DbOpenHelper; import com.example.dbtest.domain.Person; public class PersonDao { private DbOpenHelper helper; public PersonDao(Context context) { helper = new DbOpenHelper(context); } //添加一条记录 public void add(Person p) { SQLiteDatabase db = helper.getWritableDatabase(); String sql = "insert into person(name,age,phone) values(?,?,?)"; db.execSQL(sql, new Object[]{p.getName(),p.getAge(),p.getPhone()}); } //修改一条记录 public void update(Person p) { SQLiteDatabase db = helper.getWritableDatabase(); String sql = "update person set age=?,phone=? where name=?"; db.execSQL(sql, new Object[]{p.getAge(),p.getPhone(),p.getName()}); } //删除一条记录 public void delete(String name) { SQLiteDatabase db = helper.getWritableDatabase(); String sql = "delete from person where name=?"; db.execSQL(sql,new Object[]{name}); } public Person findByName(String name) { SQLiteDatabase db = helper.getReadableDatabase(); String sql = "select * from person where name=?"; Cursor cursor = db.rawQuery(sql, new String[]{name}); Person p = null; while(cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String phone = cursor.getString(cursor.getColumnIndex("phone")); int age = cursor.getInt(cursor.getColumnIndex("age")); p = new Person(id,name,age,phone); } return p; } public List<Person> findAll(String name) { SQLiteDatabase db = helper.getReadableDatabase(); String sql = "select * from person where name=?"; Cursor cursor = db.rawQuery(sql, new String[]{name}); List<Person> list = new ArrayList(); while(cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String phone = cursor.getString(cursor.getColumnIndex("phone")); int age = cursor.getInt(cursor.getColumnIndex("age")); Person p = new Person(id,name,age,phone); list.add(p); } return list; } }
4.activity.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.dbtest.MainActivity" > <Button android:id="@+id/btn_createDB" android:onClick="createDB" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="创建数据库" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/btn_createDB" android:layout_below="@+id/btn_createDB" android:text="姓名" /> <EditText android:id="@+id/et_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginLeft="21dp" android:layout_marginTop="24dp" android:ems="10" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/btn_createDB" android:layout_below="@+id/et_name" android:text="电话" /> <EditText android:id="@+id/et_phone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView2" android:layout_below="@+id/textView2" android:layout_marginLeft="21dp" android:layout_marginTop="24dp" android:ems="10" /> <Button android:id="@+id/btn_save" android:onClick="save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/et_phone" android:text="保存" /> <Button android:id="@+id/btn_update" android:onClick="update" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/btn_save" android:text="修改" /> <Button android:id="@+id/btn_find" android:onClick="findOne" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/btn_update" android:text="查询" /> <Button android:id="@+id/btn_delete" android:onClick="delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/btn_find" android:text="删除" /> </RelativeLayout>
5.activity对应点击事件
package com.example.dbtest; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.EditText; import android.widget.Toast; import com.example.dbtest.dao.PersonDao; import com.example.dbtest.dbHelper.DbOpenHelper; import com.example.dbtest.domain.Person; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void createDB(View v) { DbOpenHelper db = new DbOpenHelper(this); //该句才真正创建数据库 db.getWritableDatabase(); Toast.makeText(this, "数据库创建成功", 0).show(); } public void save(View v) { EditText nameText = (EditText)this.findViewById(R.id.et_name); EditText phoneText = (EditText)this.findViewById(R.id.et_phone); String name = nameText.getText().toString(); String phone = phoneText.getText().toString(); if(TextUtils.isEmpty(name) || TextUtils.isEmpty(phone)) { Toast.makeText(this, "姓名和电话不能为空", 0).show(); return; } PersonDao dao = new PersonDao(this); Person p = new Person(); p.setName(name); p.setPhone(phone); dao.add(p); Toast.makeText(this, "保存成功", 0).show(); } public void update(View v) { EditText nameText = (EditText)this.findViewById(R.id.et_name); EditText phoneText = (EditText)this.findViewById(R.id.et_phone); String name = nameText.getText().toString(); String phone = phoneText.getText().toString(); PersonDao dao = new PersonDao(this); Person p = new Person(); p.setName(name); p.setPhone(phone); dao.update(p); Toast.makeText(this, "修改成功", 0).show(); } public void delete(View v) { EditText nameText = (EditText)this.findViewById(R.id.et_name); EditText phoneText = (EditText)this.findViewById(R.id.et_phone); String name = nameText.getText().toString(); String phone = phoneText.getText().toString(); PersonDao dao = new PersonDao(this); dao.delete(name); Toast.makeText(this, "删除成功", 0).show(); } }