首页 > 代码库 > Android Sqlite的操作
Android Sqlite的操作
1.写一个类继承SQLiteOpenHelper
public class MyHelper extends SQLiteOpenHelper {
public MyHelper(Context context) {
super(context, Const.DB_DBNAME , null, Const.DB_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(Const.DB_CREATE_TABLE) ;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
2.定义一个Const类,定义数据库所需的常量
public class Const {
// 定义数据库相关常量
public static final int DB_VERSION = 1;
public static final String DB_DBNAME = "bwl.db";
public static final String DB_TABLENAME = "bwlinfo";
public static final String DB_COLUMN_ID = "_id";
public static final String DB_COLUMN_TITLE = "title";
public static final String DB_COLUMN_CONTENT = "content";
public static final String DB_COLUMN_DATE = "date";
public static final String DB_CREATE_TABLE = "CREATE TABLE " + DB_TABLENAME + "(" + DB_COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + DB_COLUMN_TITLE + " text not null," + DB_COLUMN_CONTENT + " text," + DB_COLUMN_DATE + " text)" ;
// Intent的key常量
// SharedPreferences的Key常量 , 文件名
// 内部存储的文件名
}
3.写操作数据库的方法
// 封装数据库操作
public class DBTool {
private static MyHelper helper ;
private static SQLiteDatabase db ;
// insert
public static long insertData(Context context , BWL bwl) {
openConn(context);
ContentValues values = new ContentValues();
values.put(Const.DB_COLUMN_TITLE, bwl.getTitle());
values.put(Const.DB_COLUMN_CONTENT , bwl.getContent());
values.put(Const.DB_COLUMN_DATE, bwl.getDate());
long rowId = db.insert(Const.DB_TABLENAME, null, values);
closeConn();
return rowId;
}
// update
/**
* 更新记录时只能更新一条
* @param updateId 要更新的数据行id
*/
public static int updateData(Context context , BWL bwl , long updateId) {
openConn(context);
ContentValues values = new ContentValues();
values.put(Const.DB_COLUMN_TITLE, bwl.getTitle());
values.put(Const.DB_COLUMN_CONTENT , bwl.getContent());
values.put(Const.DB_COLUMN_DATE, bwl.getDate());
int result = db.update(Const.DB_TABLENAME, values, Const.DB_COLUMN_ID+"="+updateId, null) ;
closeConn();
return result;
}
/**
* 自定义更新,可以更新多条记录
* @param context
* @param bwl
* @param where 更新条件
* @return 更新的行数
*/
public static int updateData(Context context , BWL bwl , String where) {
openConn(context);
ContentValues values = new ContentValues();
values.put(Const.DB_COLUMN_TITLE, bwl.getTitle());
values.put(Const.DB_COLUMN_CONTENT , bwl.getContent());
values.put(Const.DB_COLUMN_DATE, bwl.getDate());
int result = db.update(Const.DB_TABLENAME, values, where, null) ;
closeConn();
return result;
}
// delete
/**
* 最多删除一行
* @param deleteId 要删除行的id
* @return 删除的行数
*/
public static int deleteData(Context context , long deleteId) {
openConn(context);
int result = db.delete(Const.DB_TABLENAME, Const.DB_COLUMN_ID+"="+deleteId, null);
closeConn();
return result;
}
/**
* 自定义删除
* @param context
* @param where 删除数据的条件
* @return 删除的行数
*/
public static int deleteData(Context context , String where) {
openConn(context);
int result = db.delete(Const.DB_TABLENAME, where, null);
closeConn();
return result;
}
/**
* 根据给定的id,查询该条记录
* @param context
* @param rowId 要查询的数据行id
* @return 如果rowId存在,查找成功,返回BWL对象,如果rowId不存在,返回null
*/
public static BWL selectOne(Context context , long rowId) {
openConn(context);
Cursor cursor = db.query(
Const.DB_TABLENAME , null,
Const.DB_COLUMN_ID+"="+rowId , null,
null, null, null);
BWL bwl = null;
if(cursor.moveToNext()) {
bwl = new BWL(cursor.getLong(0), cursor.getString(1), cursor.getString(2), cursor.getString(3)) ;
}
closeConn();
return bwl;
}
/**
* 按照用户指定的条件进行查询
* @param context
* @param where 查询条件,如果为null,将查询所有数据
* @param order 要排序的列 , 如果为null,将按照默认主键排序
* @param isAsc 排序列的升降序
* @return 查询结果集,如果没有查找到任何数据,返回null
*/
// List<BWL> list = DBTool.selectMore(this, null, Const.DB_COLUMN_DATE, false);
public static List<BWL> selectMore(Context context , String where , String order , Boolean isAsc) {
openConn(context);
String orderStr = "";
if(null != order && order.trim().length() != 0) {
orderStr += order;
if(isAsc != null && !isAsc) {
orderStr += " desc";
}
}
Cursor cursor = db.query(
Const.DB_TABLENAME , null,
where , null,
null, null, orderStr);
if(cursor.getCount() <= 0) {
return null ;
}
List<BWL> list = new ArrayList<BWL>();
while(cursor.moveToNext()) {
list.add(new BWL(cursor.getLong(0), cursor.getString(1), cursor.getString(2), cursor.getString(3))) ;
}
closeConn();
return list;
}
/**
* 执行sql语句
* @param context
* @param sql 要执行的sql语句
*/
public static void execCmd(Context context , String sql) {
openConn(context);
db.execSQL(sql);
closeConn();
}
// 打开连接
private static void openConn(Context context) {
if(null == db) {
if(null == helper) {
helper = new MyHelper(context);
}
db = helper.getWritableDatabase();
}
}
// 关闭连接
private static void closeConn() {
if(null != db) {
db.close();
db = null;
}
}
}
4.对数据库进行操作
BWL bwl = new BWL("星期六", "周末小聚", "2011年");
// DBTool.insertData(this, bwl);
//
// BWL bwl2 = new BWL("周末", "去玩", "2011年");
// DBTool.updateData(this, bwl2, 1);
//
// BWL bwl3 = new BWL("周五", "去玩", "2011年");
// DBTool.updateData(this, bwl2, Const.DB_COLUMN_TITLE +" like ‘%周%‘");
// BWL bwl4 = DBTool.selectOne(this, 2);
// if(null != bwl4) {
// Toast.makeText(this, bwl4.toString(), Toast.LENGTH_LONG).show();
// }
// List<BWL> list = DBTool.selectMore(this, null, Const.DB_COLUMN_DATE, false);
// String content = "";
// for (BWL bwl : list) {
// content += bwl.toString() + "\n";
// }
// Toast.makeText(this,content, Toast.LENGTH_LONG).show();
// DBTool.deleteData(this, 1);
// DBTool.deleteData(this, null);