计算机学院研发第二轮考核-------浏览器之数据库篇(添加书签)
来源:互联网 发布:获取手机的gps数据 编辑:程序博客网 时间:2024/05/02 00:22
个人感觉要实现一个浏览器的基本功能,难度就在于数据库这方面了。其实android的数据库也不是很难学,我也是一个刚接触安卓两个左右月的小白,所以对于初学者不要感觉对这个感觉到畏惧,只要学会简单的对数据库进行增删查改就好了,这是对数据库的最基本的要求,我现在大概也就会这些功能。接下来就进入正题,利用数据库对书签进行储存。
使用数据库,首先就是创建数据数据库
// LableDatabaseHelper是我自己创建的一个数据库帮助类
public static LableDatabaseHelper helper;
// 创建数据库,数据库名称,版本号
helper = new LableDatabaseHelper(this,"browser.db3",null, 1);
// 查询数据库
Cursor cursor = helper.getReadableDatabase().rawQuery("select*from Lable", null);
对于数据库的增删查改我是创建一个数据库增删查改的借口了,然后写一个类实现该接口,然后重写里面的增删查改的方法,便于管理。
//这是我创建的数据库管理的接口
public interface LableDBInterface {
// 数据库插入函数
public boolean addLable(Object[] params);
// 数据库删除函数
public boolean deleteLable(Object[] params);
// 数据库更新函数
public boolean updateLable(Object[] params);
// 数据库查询函数
public Map<String, String> viewLable(String[] selectionArgs);
// 把数据库中的内容遍历一遍,封装成一个listMap类
public List<Map<String,Object>> listLableMap(Cursor cursor);
}
//以下代码是一个书签数据库的管理类实现上面的数据库管理接口
public class LableDatabaseControl implements LableDBInterface {
public boolean addLable(Object[] params) {
boolean flag = false;
SQLiteDatabase database = null;
try{
//定义插入的sql字符串语句,表名,列名
String sql = "insert into Lable (title,url) values(?,?)";
//读取数据库
database = MainBrowser.helper.getWritableDatabase();
//插入数据
database.execSQL(sql, params);
flag = true;
}catch(Exception e){
e.printStackTrace();
}finally{
// 数据库不等于null,关闭数据库
if(database!=null){
database.close();
}
}
return flag;
}
@Override
public boolean deleteLable(Object[] params) {
boolean flag = false;
SQLiteDatabase database = null;
try{
// 定义一个删除的sql语句,表名,条件
String sql = "delete from Lable where url = ?";
// 读取数据库
database = MainBrowser.helper.getWritableDatabase();
// 删除指定数据
database.execSQL(sql, params);
flag = true;
}catch(Exception e){
e.printStackTrace();
}finally{
if(database!=null){
database.close();
}
}
return flag;
}
@Override
public boolean updateLable(Object[] params) {
return false;
}
@Override
public Map<String, String> viewLable(String[] selectionArgs) {
return null;
}
// 定义一个List<Map<String, Object>>遍历数据库中Lable中的数据
public List<Map<String, Object>> listLableMap(Cursor cursor) {
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
while (cursor.moveToNext()) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("title", cursor.getString(1));
map.put("url", cursor.getString(2));
Log.e("database",cursor.getString(1));
Log.e("database",cursor.getString(2));
result.add(map);
}
return result;
}
做完以上的操作,就要利用逻辑把书签插入到数据库Lable表中,添加书签,我利用按钮的点击事件实现的,
public void onClick(View v) {
// 添加书签操作,插入数据库
boolean flag =true;//添加一个中间变量,判断书签是否存在
Log.e("AddLabele","1");
String presentUrl = MainBrowser.show.getOriginalUrl();
Log.e("presentUrl",presentUrl);
String title = MainBrowser.url.getText().toString();
Log.e("title",title);
//创建一个书签数据库管理类
LableDBInterface service = new LableDatabaseControl();
//需要插入的数据
Object [] params = {title,presentUrl};
//查询数据库
cursor = MainBrowser.helper.getReadableDatabase().rawQuery("select*from Lable", null);
//
while(cursor.moveToNext()){
// 判断书签里面是否含有该url,有就把flag设置为false,那样就无法再向数据库的Lable插入数据
if(presentUrl.equals(cursor.getString(2))){
Toast.makeText(context, "书签已存在", Toast.LENGTH_SHORT).show();
flag = false;
break;
}
}
if(flag){
//向Lable插入要添加的书签信息
service.addLable(params);
Toast.makeText(context, "书签添加成功", Toast.LENGTH_SHORT).show();
}
}
}
以上代码便可以实现了一个web浏览器的基本的添加书签功能。
- 计算机学院研发第二轮考核-------浏览器之数据库篇(添加书签)
- 计算机学院研发第二轮考核--------数据库篇之(删除书签)
- 计算机学院研发第二轮考核-------浏览器之界面
- 计算机学院研发第二轮考核-------浏览器之实现(前进、后退、刷新)
- 计算机学院研发第二轮考核--------(补充)浏览器之获取网站返回的图标
- 计算机学院研发第二轮考核---------简述WebViewClient与WebChromeClient,浏览器之无痕浏览
- 计算机学院研发第二轮考核-------浏览器之无图模式
- 计算机学院研发第二轮考核----------实现浏览器的上网功能
- 计算机学院研发第二轮考核--------Activity的回调(startActivityForResult)
- 计算机学院研发第二轮考核-------利用WebSetting来浏览网页进行优化(js脚本加载,图片,可放大缩小等)
- 计算机学院研发------考核之界面
- 计算机学院研发考核------下载管理列表(未完)
- 计算机学院研发考核-------Activity的跳转
- 计算机学院研发------考核联网操作
- 研发第二轮考核的8天--7.20~7.28
- 第二轮考核结束!!!
- 2014.05.29计算机学院研发团队考核----------------移动云盘
- 计算机学院研发考核----android之后台断点下载
- JS中如何定义全局变量
- 我理解的逻辑地址、线性地址、物理地址和虚拟地址
- 软件开发中注意事项
- 重写Java Object对象的hashCode和equals方法实现集合元素按内容判重
- Android Studio(三)创建新项目
- 计算机学院研发第二轮考核-------浏览器之数据库篇(添加书签)
- 设置tableViewCell颜色
- windows系统cmd命令下可直接运行的功能
- URAL 1073 Square Country(DP)
- uploadify和greybox插件的使用
- Qt学习笔记——打开并显示图片
- hdoj2034 人见人爱A-B
- 怎么删除项目中的SVN信息?
- 线段树总结