android的开发中使用的数据库是SQLite ,它是一个轻量级的数据库 、非常小 、 移植性好、效率高、可靠。开发中使用数据库 的添加、删除、修改、查找操作,尤其在处理大量数据的时候使用数据库可以帮我们迅速定位当前须要处理的数据。同时android给我们提供了非常简单的操作方仿,我们只需要继承SQLiteOpenHelper类,实现其中的onCreate(SQLiteDatabase db)和 onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)方法,
如下面我书写的代码
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DataBseOpenHelper extends SQLiteOpenHelper
{
private static final String DBNAME = "person";
private static final int version = 1;
public DataBseOpenHelper(Context context)
{
super(context, DBNAME, null, version);
}
/*
* 我们第一次打开应用,是调用,创建数据库
*/
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL("CREATE TABLE IF NOT EXISTS person (personId INTEGER primary key autoincrement,name varcahr(20), age INTEGER)");
}
/*
* 软件更新,和数据库版本更换会调用此函数这对于我们更新软件非常方便
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS person");//
this.onCreate(db);
}
}
在调用类中 我们用
- SQLiteDatabase db = new DataBseOpenHelper(Activity.this) .getWritableDatabase();利用SQLiteDatabase 给我们提供的方法操作即可。如我在调用的类里的代码
- import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.itcast.domain.Person;
public class OtherService
{
private DataBseOpenHelper dataBseOpenHelper ;
public OtherService(Context context){
dataBseOpenHelper = new DataBseOpenHelper(context);
}
public void save(ContentValues values)
{
SQLiteDatabase db = dataBseOpenHelper.getWritableDatabase();
db.insert("person", null, values);//添加记录,除了主键,其它的字段为null
db.close();
}
public void update(ContentValues values ,Person person)
{
SQLiteDatabase db = dataBseOpenHelper.getWritableDatabase();
db.update("person", values, "name= ?", new String []{person.getName() });
db.close();
}
public Person find(Integer id)
{
SQLiteDatabase db = dataBseOpenHelper.getWritableDatabase();
Cursor cursor = db.query("person", null, "personId=?", new String[]{String.valueOf(id)}, null, null, null);
if (cursor.moveToNext())
{
return new Person(cursor.getInt(0), cursor.getString(1), cursor.getInt(2));
}
db.close();
return null;
}
public void delete(Integer... ids)
{
if (ids.length > 0)
{
StringBuffer sb = new StringBuffer() ;
String [ ]stIds = new String[ids.length];
for(int i = 0;i<ids.length;i++){
sb.append('?').append(',');
stIds[i]=String.valueOf(ids[i]);
}
sb.deleteCharAt(sb.length() - 1);
SQLiteDatabase db = dataBseOpenHelper.getWritableDatabase();
db.delete("person", "personId in("+sb+")", stIds);
db.close();
}
}
public List<Person> getScollData(int start, int end)
{
List<Person> persons = new ArrayList<Person>();
SQLiteDatabase db = dataBseOpenHelper.getWritableDatabase();
Cursor cursor = db.query("person", null, null, null, null, null, null, start+","+end);
while (cursor.moveToNext())
{
persons.add(new Person(cursor.getInt(0),cursor.getString(1),cursor.getInt(2)));
}
cursor.close();
db.close();
return persons;
}
public long getCount()
{
SQLiteDatabase db = dataBseOpenHelper.getWritableDatabase();
Cursor cursor = db.query("person", new String []{"count(*)"}, null, null, null, null, null);
if (cursor.moveToNext())
{
return cursor.getLong(0);
}
return 0;
}
}