android数据库SQlite的使用
Android的数据库Sqlite是一种很小又非常流行的嵌入式数据库,它支持 SQL 语言,并且占用资源低,只利用很小的内存却有不错的性能。另外它还是开源的,任何人都可以使用它,它能够支持Windows/Linux/Unix等等主流的操作系统。一些开源项目如:Mozilla, PHP, Python都使用了 SQLite.
下面的代码实现了sqlite数据库的链接和使用,一般的增删改查都可以通过调用下面类的方法实现。
链接sqlite数据库:(DbHelper)
package com.example.databasetest;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class MysqlliteDbHelper extends SQLiteOpenHelper{
private static MysqlliteDbHelper instance=null;
public static MysqlliteDbHelper getinstance(Context context, String name)
{
if(instance==null)//这样做是为了只有一个MysqlliteDbHelper
{
instance=new MysqlliteDbHelper(context, name);
}
return instance;
}
public MysqlliteDbHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
}
public MysqlliteDbHelper(Context context, String name) {
super(context, name, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
StringBuffer sb=new StringBuffer();
sb.append("create table contactperson(id integer primary key autoincrement,name varchar(20),phone varchar(20),address varchar(30))");
db.execSQL(sb.toString()); //创建数据库
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
下面的代码是对sqlite数据库进行操作:(Dao)
package com.example.databasetest;
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;
public class MycontectpersonDao {
private MysqlliteDbHelper helper=null;
private String person_TABLENAME="contactperson";
private String person_ID="id";
private String person_NAME="name";
private String person_PHONE="phone";
private String person_ADDRESS="address";//个人定义的字段名
public MycontectpersonDao(Context context) {
helper=MysqlliteDbHelper.getinstance(context, "person.db");
}
public int insert(Contectperson person)//增
{
SQLiteDatabase sqd=helper.getWritableDatabase();//要写,所以用了getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put(person_NAME,person.name);
cv.put(person_PHONE,person.phone);
cv.put(person_ADDRESS, person.address);
long resault=sqd.insert(person_TABLENAME, null, cv);
sqd.close();
return (int)resault;
}
public int delete(int id)//删
{
SQLiteDatabase sqd=helper.getWritableDatabase();
long resault=sqd.delete(person_TABLENAME, person_ID+"=?", new String[]{id+""});
sqd.close();
return (int)resault;
}
public int update(Contectperson person)//改
{
SQLiteDatabase sqd=helper.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put(person_NAME,person.name);
cv.put(person_PHONE,person.phone);
cv.put(person_ADDRESS, person.address);
int resault=sqd.update(person_TABLENAME, cv, person_ID+"=?",new String[]{person.id+""} );
sqd.close();
return resault;
}
public Contectperson findPersonbyid(int id)//查 一个
{
SQLiteDatabase sqd=helper.getReadableDatabase();//查找,所以用可读的
Cursor cursor=sqd.query(person_TABLENAME, null, person_ID+"=?",new String[]{id+""}, null, null, null);//还要用Cursor
Contectperson person=null;
while(cursor.moveToNext())
{
int person_id=cursor.getInt(cursor.getColumnIndex(person_ID));
String person_name=cursor.getString(cursor.getColumnIndex(person_NAME));
String person_phone=cursor.getString(cursor.getColumnIndex(person_PHONE));
String person_address=cursor.getString(cursor.getColumnIndex(person_ADDRESS));
person=new Contectperson(person_id, person_name, person_phone, person_address);
}
cursor.close();
sqd.close();
return person;
}
public List<Contectperson> findAllperson() //查 多个
{
List<Contectperson> persons=new ArrayList<Contectperson>();
SQLiteDatabase sqd=helper.getReadableDatabase();
Cursor cursor=sqd.query(person_TABLENAME, null, null, null, null, null, null);
while(cursor.moveToNext())
{
int person_id=cursor.getInt(cursor.getColumnIndex(person_ID));
String person_name=cursor.getString(cursor.getColumnIndex(person_NAME));
String person_phone=cursor.getString(cursor.getColumnIndex(person_PHONE));
String person_address=cursor.getString(cursor.getColumnIndex(person_ADDRESS));
Contectperson person=new Contectperson(person_id, person_name, person_phone, person_address);
persons.add(person);
}
cursor.close();
sqd.close();
return persons;
}
}