sqlite實現新聞收藏和移除最愛

來源:互聯網
上載者:User

標籤:

  之前學習oracle,簡單的認為資料庫只存在伺服器端,學習安卓之後才發現原來android和Ios本身是“攜帶”資料庫的——SQLite,是輕量級的、嵌入式的、關係型資料庫,是Android、IOS等廣泛使用的的資料庫系統。用於儲存本地的一直狀態。剛寫出來一個實現新聞收藏的功能,寫出來供大家參考。

  在Android中我們通過SQLiteDatabase這個類的對象操作SQLite資料庫。由於SQLite資料庫並不需要像C/S資料庫那樣建立串連以及身分識別驗證的特性,以及SQLite資料庫單檔案資料庫的特性,使得獲得SQLiteDatabase對象就像獲得操作檔案的對象那樣簡單。

  sqlite要經過建立資料庫、建立表,然後進行增刪改查等功能。所以第一步,建立一個資料庫,SQliteOpenHelper是一個抽象類別,來管理資料庫的建立和版本的管理。要使用它必須實現它的nCreate(SQLiteDatabase),onUpgrade(SQLiteDatabase, int, int)方法

//建立資料庫,建表
1 private static final String DBNAME="news.db"; 2 private static final int VERSION=3;  //設定版本號碼 3 private static final String TBL_DETAILNEWS="news";   //建立表名為news的表 4     private static final String TBL_DETAILNEWS_COLUMN_TITLE="_title";  5     private static final String TBL_DETAILNEWS_COLUMN_URL="_url"; 6     private static final String TBL_DETAILNEWS_COLUMN_DOCID="_docid"; 7     private static final String TBL_DETAILNEWS_COLUMN_STATE="_state"; 8  9     public NewsDBHelper(Context context){10         super(context,DBNAME,null,VERSION);11     }12 13     @Override14     public void onCreate(SQLiteDatabase db) {15         // TODO Auto-generated method stub16         StringBuffer sb=new StringBuffer();17         sb.append("create table if not exists ");18         sb.append(TBL_DETAILNEWS+"(");19         sb.append(TBL_DETAILNEWS_COLUMN_DOCID +" varchar(100) primary key ,");   //設定主鍵20         sb.append(TBL_DETAILNEWS_COLUMN_TITLE+ " varchar(100) ,");21         sb.append(TBL_DETAILNEWS_COLUMN_URL+" varchar(100) ,");22         sb.append(TBL_DETAILNEWS_COLUMN_STATE+" integer ");23         sb.append(")");24         db.execSQL(sb.toString());25 26     }27 @Override28     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {29         String sql2="drop table if exists "+TBL_DETAILNEWS;30         db.execSQL(sql2);    //建立31         onCreate(db);32     }

   Android提供了一個名為SQLiteDatabase的類,它封裝了一些操作資料庫的API。使用它能實現基本的CRUD操作,通過getWritableDatabase()和getReadableDatabase()可以擷取資料庫執行個體,便可以寫一些dao層的方法來進行對錶的操作:

public class DetailNewsDao {    private NewsDBHelper helper;    public DetailNewsDao(Context context){            helper=new NewsDBHelper(context);   //與資料庫建立串連    }    //插入資料    public void insertDetsilNews(News news){        SQLiteDatabase db=helper.getWritableDatabase();          db.execSQL("insert into news(_title,_url,_docid)" +  //將要收藏新聞的標題title,標識docid,詳細地址url傳入資料庫,便可以依此開啟新聞詳顯                "values(?,?,?)",new String[]{news.getTitle(),news.getDetailUrl(),news.getDocid()});        db.close();    }    //刪除資料    public void del(String docid){   //根據傳入參數docid刪除資料        SQLiteDatabase db=helper.getReadableDatabase();        db.execSQL("delete from news where _docid = ?",new Object[]{docid});        db.close();    }    //查詢資料    public List<News> findSelected(){        SQLiteDatabase db=helper.getReadableDatabase();        Cursor c=db.rawQuery("select * from news", null);    //只有對資料進行查詢時,才用rawQuery(),增、刪、改和建表,都用execSQl()        List<News> list=new ArrayList<News>();        while(c.moveToNext()){            News news=new News();            news.setTitle(c.getString(c.getColumnIndex("_title")));            news.setDetailUrl(c.getString(c.getColumnIndex("_url")));            news.setDocid(c.getString(c.getColumnIndex("_docid")));            list.add(news);        }        c.close();        db.close();        return list;    }}

 

用actionbar做好功能表按鈕,點擊收藏,執行代碼 :

if(item.getTitle().equals("收藏")){                    Toast.makeText(this,"收藏成功", Toast.LENGTH_LONG).show();                detailNewsDao.insertDetsilNews(news);                item.setTitle("移除最愛");            }else{                detailNewsDao.del(news.getDocid());                Toast.makeText(this,"移除最愛", Toast.LENGTH_LONG).show();                item.setTitle("收藏");            }

這樣整個收藏,移除最愛就做好了。

 

sqlite實現新聞收藏和移除最愛

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.