通过Sql语句控制SQLite数据库增删改查

person类属性有Intenger id,String name,Intenger  age,相应的构造方法和set get方法。

package com.xh.tx.dao;

import java.util.ArrayList;
import java.util.List;

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

import com.xh.tx.bean.Person;
import com.xh.tx.utils.MySQLLiteHelper;

public class PersonDao
{
  private MySQLiteHelper helper;
  public PersonDao(Context context)
  {
    helper = new MySQLiteHelper(context, null, null, -1);//前者创建的时候版本已经固定了,后面的-1没作用,与前面的用Eclipse创建数据库文章相结合
  }

  /**
  * 对数据库进行添加操作
  * sql:insert into person(name,age) values('sz',20);
  *缺陷:
  * 1. 传递参数很麻烦
  * 2. 不能有返回值
  */

  public void savePerson(Person p)
  {
    String sql = "insert into person(name,age) values(?,?);";//person是数据库中已经创建的表,具有_id,name,age属性,_id是key
    SQLiteDatabase db = helper.getWritableDatabase();
    //db代表的是一个数据库的一个连接
    if(db.isOpen())//判断数据库是否打开
    {
      db.execSQL(sql, new Object[]{p.getName(),p.getAge()}); //向数据库里面去添加一行记录,后者为bindArgs,相印的对象类型是包装类
      db.close(); //记住一定要关闭数据库的连接
    }
  }

  /**
  * 删除一个对象
  * sql:delete from person where _id = 1;
  */
  public void deletePerson(Integer id)
  {
    String sql = "delete from person where _id = ?;";
    SQLiteDatabase db = helper.getWritableDatabase();
    if(db.isOpen())
    {
      db.execSQL(sql, new Integer[]{id});
      db.close();
    }
  }

  /**
  * 修改一个对象
  * sql:update person set name ='cccc' where _id=1;
  */
  public void updatePerson(Person p)
  {
    String sql = "update person set name =? where _id=?;";
    SQLiteDatabase db = helper.getWritableDatabase();
    if(db.isOpen())
    {
      db.execSQL(sql, new Object[]{p.getName(),p.get_id()});
      db.close();
    }
  }

  /**
  * 查询所有
  */
  public List<Person> queryPerson()
  {
    String sql = "select _id,name,age from person;";
    SQLiteDatabase db = helper.getReadableDatabase();
    List<Person> list = null;

    if(db.isOpen())
    {
      Cursor cursor = db.rawQuery(sql, null); //查询
      //cursor.getCount() 查看执行sql以后返回的结果集的个数
      if(null != cursor && cursor.getCount() > 0)
      {
        list = new ArrayList<Person>();
        while(cursor.moveToNext())
        {
          Integer id = cursor.getInt(0);
          String name = cursor.getString(1);
          Integer age = cursor.getInt(2);
          list.add(new Person(id,name,age));
        }

      }

      cursor.close();

      db.close();
    }
    return list;
  }
}