android数据库简单操作

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 数据库名
        //factory 数据库工厂 当为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();
        
    }

}

 

android数据库简单操作

上一篇:Android peferenceActivity 自定义标题简单方法


下一篇:Android中Serivce初探