Android学习第九天----SQLite

android中的数据库只有唯一的SQLite,这样便于操作,该数据库是android自带的数据库,用户无需向j2ee那样,没做一个东西要添加一个jar文件,多么的麻烦。

一、数据库的创建

package com.will.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBConn extends SQLiteOpenHelper
{

    public DBConn(Context context)
    {
        super(context, "sql.db", null, 1);
        
    }

    @Override
    public void onCreate(SQLiteDatabase db)
    {
        db.execSQL("create table person(id integer primary key autoincrement,name varchar(20),sex varchar(20),tel varchar(20))");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    {
        db.execSQL("alter table person add column address varchar(20)");
    }
    
}

创建一个类,继承自SQLiteOpenHelper,该类有两个抽象方法,所以就必须实现onCreate跟onUpgrade方法,但是实现这两个方法之后发现程序还是会报错的。这时候要考虑

该类中的构造方法是否有需要传递某些值之类的东西。

数据库的创建跟sql语法是一样的,没有多大的区别,如果写错sql系统还是会报错的。

系统默认自己执行的onCreate方法,在构造方法中需要传入一个1,1代表的是版本号。如果改变1的值,则会执行onUpgrade方法,这个方法的作用是更新对数据库的操作。

写完这个方法之后就可以在mainActivity中调用这个方法,执行完该方法之后就会在系统的data目录下的data目录下,找到自己包的名称,然后会自动生成一个database文件夹,文件夹里面包含一个sql文件,该文件的文件名,就是构造方法中传入的第二个值。

一般来说这个步骤可以通过testcase来实现的。

接下来将数据封装到对象中。

package com.will.entity;

public class Person
{
    private int id;
    private String name;
    private String sex;
    private String tel;
    private String address;
    
    public Person(int id, String name, String sex, String tel, String address)
    {
        super();
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.tel = tel;
        this.address = address;
    }

    public Person(String name, String sex, String tel, String address,int id)
    {
        super();
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.tel = tel;
        this.address = address;
    }
    
    
    @Override
    public String toString()
    {
        return "Person [id=" + id + ", name=" + name + ", sex=" + sex
                + ", tel=" + tel + ", address=" + address + "]";
    }

    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 String getSex()
    {
        return sex;
    }
    public void setSex(String sex)
    {
        this.sex = sex;
    }
    public String getTel()
    {
        return tel;
    }
    public void setTel(String tel)
    {
        this.tel = tel;
    }
    public String getAddress()
    {
        return address;
    }
    public void setAddress(String address)
    {
        this.address = address;
    }
}

然后对于数据库的CRUD操作

package com.wil.service;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.will.db.DBConn;
import com.will.entity.Person;

public class DBService
{
    private DBConn dbConn;
    private SQLiteDatabase db;
    public DBService(Context context)
    {
        dbConn = new DBConn(context); 
        db = dbConn.getReadableDatabase();
    }
    
    public void add(Person p)
    {
        db.execSQL("insert into person values(?,?,?,?,?)" ,new Object[]{p.getId(),p.getName(),p.getSex(),p.getTel(),p.getAddress()});

    }
    
    public void del(Integer i)
    {
        db.execSQL("delete from person where id=?", new Integer[]{i});
        
    }
    public void modify(Person p)
    {
        db.execSQL("update person set name=?,sex=?,tel=?,address=? where id=?", new Object[]{p.getName(),p.getSex(),p.getTel(),p.getAddress(),p.getId()});
    }
    public Person query(int i)
    {
        Cursor cursor = db.rawQuery("select * from person where id=?", new String[]{String.valueOf(i)});
        if(cursor.moveToNext())
        {
            String name = cursor.getString(cursor.getColumnIndex("name"));
            String sex = cursor.getString(cursor.getColumnIndex("sex"));
            String tel = cursor.getString(cursor.getColumnIndex("tel"));
            String address = cursor.getString(cursor.getColumnIndex("address"));
            
            return new Person(i,name,sex,tel,address);
        }
        
        return null;
    }
}

这样就完成数据库的CRUD操作。具体的调用在MainActivity中都可以实现的。

posted @ 2013-03-15 00:36  小三小山  阅读(190)  评论(0编辑  收藏  举报