Android SQLite
2015-10-16 22:51
465 查看
SQLite
今天玩了下android的SQLite引擎,觉得倍儿爽,以前只会用sharepreferences,现在升了下Level。
现在我说一下简单用法
建表
db.execSQL("CREATE TABLE IF NOT EXISTS news" + "(id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT, content TEXT)");
插入
db.execSQL("INSERT INTO news VALUES(?,?,?)", new Objects[]{news.getId(),news.getTitle(),news.getContent()});
删除
db.delete("news", "id = ?", new String[{String.valueOf(news.getId())})
查询
Cursor c = db.rawQuery("SELECT*FROM news", null);//查表 List<News> newsList= new ArrayList<>(); while (c.moveToNext()) { News news= new News(); news.setId(c.getInt(c.getColumnIndex("id"))); news.setTitle(c.getString(c.getColumnIndex("title"))); news.setContent(c.getString(c.getColumnIndex("content"))); newsList.add(news); } c.close(); }
更新
db.update("news", values, "id = ?", new String[]{String.valueOf(news.getId())});
附上部分代码
NewsDBHelper .javapublic class NewsDBHelper extends SQLiteOpenHelper {
public NewsDBHelper (Context context) {//必须声明构造函数
super(context, "news_db", null, 1);
}
//数据库第一次被创建时onCreate会被调用
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS news" + "(id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT, content TEXT)");}
//必须重载此方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("ALTER TABLE news ADD COLUMN other STRING");
}
}
DBManage.java
public class DBManage {
private NewsDBHelper helper;
private SQLiteDatabase db;
public DBManage(Context context) {
helper = new NewsDBHelper(context);
db = helper.getWritableDatabase();
}
//插入
public boolean add(News news) {
db.beginTransaction();
try {
db.execSQL("INSERT INTO news VALUES(?,?,?)"
, new Object[]{news.getId(), news .getTitle(), news.getContent()});
db.setTransactionSuccessful();//设置事务成功完成
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally {
db.endTransaction();//结束事务
}
}
//删除
public void delete(News news) {
db.delete("news", "id = ?", new String[]{String.valueOf(news.getId())});//删除当前id为xx的数据
}
//查询
public List<News> query() {
List<News> newsList= new ArrayList<>();
Cursor c = queryTheCursor();
while (c.moveToNext()) {
News news= new News();
news.setId(c.getInt(c.getColumnIndex("id")));
news.setTitle(c.getString(c.getColumnIndex("title")));
news.setContent(c.getString(c.getColumnIndex("content")));
newsList.add(news);
}
c.close();
return notes;
}
//更新
public Boolean update(News news) {
db.beginTransaction();
try {
ContentValues values = new ContentValues();
values.put("title", news.getTitle());
values.put("content", news.getContent());
db.update("news", values, "id = ?", new String[]{String.valueOf(news.getId())});db.setTransactionSuccessful();//设置事务成功完成
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally {
db.endTransaction();//结束事务
}
}
public Cursor queryTheCursor() {
Cursor c = db.rawQuery("SELECT*FROM news", null);//查表
return c;
}
public void closeDB() {
db.close();
}//关闭数据库
News.java
public class News{ private int id; private String title; private String content; public News() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
最后记得在程序结束时添上一句
db.close();//关闭数据库
相关文章推荐
- Android中的OpenGL ES使用案例
- 2015-10-16
- Android_03_SimpleAdapter的使用
- android 边学边记 2015.10.16
- Android开发,获取手机IP地址的两种方式
- Android_03_ArrayAdapter的使用
- Android项目实践001——带有进度的Button
- android 19 activity纵横屏切换的数据保存与恢复
- 日报2015/10/16(极客学院安卓视频学习)
- android工程目录结构超详细介绍
- Volley使用指南第二回(来自developer.android)
- android 18 Bundle类
- Android经典底部选项卡集成方式之二
- Android Fragment碎片使用方法汇总
- android TextView自动滚动以及Java中改变显示内容
- Android 旋转字体 实现(应用角标,如:新,火等关键字)
- Android数据缓存(转)
- android 17 activity生命周期
- 以Android环境为例的多线程学习笔记———-Callable与Future
- android学习