您的位置:首页 > 移动开发 > Android开发

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 .java

public 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();//关闭数据库
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: