计算机学院研发第二轮考核-------浏览器之数据库篇(添加书签)

来源:互联网 发布:获取手机的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浏览器的基本的添加书签功能。




0 0
原创粉丝点击