Android提供了创建和是用SQLite数据库的API。SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法。
要求:
使用SQLite数据库,将某条新闻(包含标题时间内容)插入到数据库中。
实现:
SQLiteOpenHelper类是SQLiteDatabase一个辅助类。这个类主要生成一 个数据库,并对数据库的版本进行管理。当在程序当中调用这个类的方法getWritableDatabase()或者 getReadableDatabase()方法的时候,如果当时没有数据,那么Android系统就会自动生成一个数据库。
package com.example.hades.toutiao;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* Created by hades on 2017/6/17.
*/
public class NewsListDB extends SQLiteOpenHelper {
public NewsListDB(Context context, String name, SQLiteDatabase.CursorFactory factory,
int version) {
super(context, name, factory, version);
}
public void onCreate(SQLiteDatabase db) {
String sql = "create table if not exists list(_id integer primary key autoincrement,title text,desc text,content text,pubdate text,img text)";
Log.i("Tag", "create Database");
db.execSQL(sql);
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.i("Tag", "update Databases");
}
}
创建
public void Creat() {
NewsListDB listDB = new NewsListDB(context, "news.db", null, 2);
SQLiteDatabase db = listDB.getReadableDatabase();
Log.i("Tag", "Creat");
}
升级
public void Update() {
NewsListDB listDB = new NewsListDB(context, "news.db", null, 2);
SQLiteDatabase db = listDB.getReadableDatabase();
Log.i("Tag", "Update");
}
插入
注意corsor的关闭
public void Insert(String t, String d, String c, String i, String p) {
NewsListDB listDB = new NewsListDB(context, "news.db", null, 2);
SQLiteDatabase db = listDB.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("title", t);
cv.put("desc", d);
cv.put("content", c);
cv.put("img", i);
cv.put("pubdate", p);
db.insertOrThrow("list", null, cv);
Log.i("Tag", "Indert");
db.close();
}
查询
返回一个map对象
public List<Map<String, String>> Query() {
NewsListDB dbHelper = new NewsListDB(context, "news.db", null, 2);
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("list", new String[]{"title", "desc", "content", "img", "pubdate"}, null, null, null, null, null);
List<Map<String, String>> data = new ArrayList<Map<String, String>>();
while (cursor.moveToNext()) {
Map map = new HashMap<String, String>();
map.put("news_title", cursor.getString(cursor.getColumnIndex("title")));
map.put("news_desc", cursor.getString(cursor.getColumnIndex("desc")));
map.put("news_img", cursor.getString(cursor.getColumnIndex("img")));
map.put("news_content", cursor.getString(cursor.getColumnIndex("content")));
map.put("news_pubdate", cursor.getString(cursor.getColumnIndex("pubdate")));
data.add(map);
}
cursor.close();
db.close();
return data;
}
删除
public void Delete() {
NewsListDB listDB = new NewsListDB(context, "news.db", null, 2);
SQLiteDatabase db = listDB.getReadableDatabase();
String whereClauses = "id=?";
String[] whereArgs = {String.valueOf(2)};
db.delete("stu_table", whereClauses, whereArgs);
}
完整AddLikeItem类:
package com.example.hades.toutiao;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by hades on 2017/6/17.
*/
public class AddLikeItem {
public Context context;
public String newsTitle, newsDesc, newsContent, newsImg, newsPubDate;
public AddLikeItem(Context context) {
this.context = context;
Log.i("Tag", "context2" + String.valueOf(context));
}
public void Creat() {
NewsListDB listDB = new NewsListDB(context, "news.db", null, 2);
SQLiteDatabase db = listDB.getReadableDatabase();
Log.i("Tag", "Creat");
}
public void Update() {
NewsListDB listDB = new NewsListDB(context, "news.db", null, 2);
SQLiteDatabase db = listDB.getReadableDatabase();
Log.i("Tag", "Update");
}
public void Insert(String t, String d, String c, String i, String p) {
NewsListDB listDB = new NewsListDB(context, "news.db", null, 2);
SQLiteDatabase db = listDB.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("title", t);
cv.put("desc", d);
cv.put("content", c);
cv.put("img", i);
cv.put("pubdate", p);
db.insertOrThrow("list", null, cv);
Log.i("Tag", "Indert");
db.close();
}
public List<Map<String, String>> Query() {
NewsListDB dbHelper = new NewsListDB(context, "news.db", null, 2);
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("list", new String[]{"title", "desc", "content", "img", "pubdate"}, null, null, null, null, null);
List<Map<String, String>> data = new ArrayList<Map<String, String>>();
while (cursor.moveToNext()) {
Map map = new HashMap<String, String>();
map.put("news_title", cursor.getString(cursor.getColumnIndex("title")));
map.put("news_desc", cursor.getString(cursor.getColumnIndex("desc")));
map.put("news_img", cursor.getString(cursor.getColumnIndex("img")));
map.put("news_content", cursor.getString(cursor.getColumnIndex("content")));
map.put("news_pubdate", cursor.getString(cursor.getColumnIndex("pubdate")));
data.add(map);
}
cursor.close();
db.close();
return data;
}
public void Delete() {
NewsListDB listDB = new NewsListDB(context, "news.db", null, 2);
SQLiteDatabase db = listDB.getReadableDatabase();
String whereClauses = "id=?";
String[] whereArgs = {String.valueOf(2)};
db.delete("stu_table", whereClauses, whereArgs);
}
}