Sqlite数据库
Android IDE
首先在自己项目中新建一个类,类名自拟,如SqliteHelper,同时继承SqliteOpenHelper并实现其中的方法onCreate(SQLiteDatabase db)方法,该类负责创建数据库并创建数据表。代码如下:import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;/** * 新建一个SqlitHelper类,继承SQLiteOpenHelper并实现onCreate(SQLiteDatabase db)方法 * @author lxd */public class SqlitHelper extends SQLiteOpenHelper{ //数据库版本号,大于等于1即可 private static final int VERSION = 1; //自己定义的数据库名称 private static String databaseName = 'shop'; //构造方法 public SqlitHelper(Context context) { super(context, databaseName, null, VERSION); } @Override public void onCreate(SQLiteDatabase db) { //建表语句,只执行一次 db.execSQL('create table commodityinfo(id integer primary key autoincrement' + ',commodityname varchar(40), commodityprice varchar(40),commoditynum varchar(40))'); } @Override public void onUpgrade(SQLiteDatabase db, int oldVer, int newVersion) {}}
创建类SqliteManager,其中封装了增删改查的操作,代码如下:import java.util.ArrayList;import java.util.List;import com.lxd.domain.Commodity; //这个包下面创建了与表名对应的be //en类,如Commodityimport android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;public class SqliteManager{ //对SqlitHelper的引用 private SqlitHelper sqlitHelper = null; //数据库具体操作类,其中封装insert、update delete、query等操作 private SQLiteDatabase sqLiteDatabase=null; //上下文对象,在外部初始化此类时传入的Context,保证在是在同一环境下的操作 Context context; //构造方法 public CopyOfSqliteManager(Context context) { this.context = context; this.sqlitHelper = new SqlitHelper(context); } /** * 打开数据库链接 */ public void openWriteConnection() { this.sqLiteDatabase = sqlitHelper.getWritableDatabase(); } public void openReadConnection() { this.sqLiteDatabase = sqlitHelper.getWritableDatabase(); } /** * 关闭数据库链接 */ public void releaseConnection() { if (sqLiteDatabase!=null) { sqLiteDatabase.close(); } if (sqLiteDatabase!=null) { sqLiteDatabase.close(); } } /** * 插入数据方法 * @param table表名(必填) * @param nullColumnHack * @param values 要插入的ContentValues键值对:参考android API 文档) * @return 插入成功与否的标志 */ public boolean insert(String table,String nullColumnHack,ContentValues values) { boolean flag = false; openWriteConnection(); long count = sqLiteDatabase.insert(table, null, values); flag = (count>0?true:false); releaseConnection(); return flag; } /** * 删除记录 * @param table 表名(必填) * @param whereClause 条件(如:where id=?) * @param whereArgs 条件值(如:new String[]{1})对应where条件 * @return 插入成功与否的标志 */ public boolean delete(String table,String whereClause,String[] whereArs) { boolean flag = false; openWriteConnection(); int count = sqLiteDatabase.delete(table, whereClause, whereArs); flag = (count>0?true:false); releaseConnection(); return flag; } /** * 更新表数据 * @param table 表名(必填) * @param values 所要更改的ContentValues键值对(参考android API 文档) * @param whereClause 条件(如:where id=? * @param whereArgs 条件值(如:new String[]{1})对应where条件 * @return 插入成功与否的标志 */ public boolean update(String table,ContentValues values,String whereCl ause,String[] whereArgs) { boolean flag = false; openWriteConnection(); int count = sqLiteDatabase.update(table, values, whereClause, whereArgs); flag = (count>0?true:false); releaseConnection(); return flag; } /** * 查找,返回所有记录的集合,可通过多种条件查找 * @param table 表名(必填) * @param columns 列名(可为null) * @param selection 所选字段(可为null) * @param selectionArgs 字段值(可为null) * @param groupBy 分组(可为null) * @param having (可为null) * @param orderBy(排序可为null) * @return 返回所查询条件所满足的记录集合 */ public List
创建与表对应的been类,如Commodity,其中封装了与数据表对应的属性字段。以供查询使用。实现Serializable可以保证该类能够在网络上传输。代码如下:import java.io.Serializable;public class Commodity implements Serializable{ private static final long serialVersionUID = 1L; private int id=0; private String commodityprice =''; private String commoditynum = ''; private String commodityname = ''; public Commodity() {} public String getCommodityname() { return commodityname; } public void setCommodityname(String commodityname) { this.commodityname = commodityname; } public String getCommodityprice() { return commodityprice; } public void setCommodityprice(String commodityprice) { this.commodityprice = commodityprice; } public String getCommoditynum() { return commoditynum; } public void setCommoditynum(String commoditynum) { this.commoditynum = commoditynum; } public static long getSerialversionuid() { return serialVersionUID; } public int getId() { return id; } public void setId(int id) { this.id = id; }}
最后,测试类中或者在需要对数据库进行操作的类中实例化SqliteManager类即可,并调用其中相应方法进行操作:如在主界面中要进行删除操作:protected void delete(){ //commodityinfo是表名 String condition = '棉花'; sqliteManager.delete('commodityinfo', 'commodityname = ?', new St ring[]{condition}); query(); //将更新后的数据重新查一遍显示到界面上 } /** * 添加 */ protected void insert() { ContentValues values = new ContentValues(); values.put('commodityname', '酱油'); values.put('commodityprice', '10'); //Toast.makeText(getBaseContext(), ed2.getText().toString(), 0).show(); sqliteManager.insert('commodityinfo', null, values); }其它操作类似。以上类可以直接在项目中使用,只需要根据需要在自己项目中稍微修改就能使用。
使用完数据库后要及时关闭数据库连接
在SqliteManager类中查询方法用到的是sqLiteDatabase = sqlitHelper.getReadableDatabase();();
其它操作用到的是sqLiteDatabase=sqlitHelper.getWritableDatabase();