android之SQLite在下載管理中的使用

來源:互聯網
上載者:User

由於項目需要一個下載管理模組,最近一直研究檔案下載的實現,經過不斷的努力終於搞定了!檔案下載管理中我們要對檔案的資訊進行儲存,包括檔案的大小,檔案名稱,類型等。這時我們就要用到資料庫了,android系統為我們提供了輕量級的資料庫SQLite。對於SQLite的使用我們可以參考mars的相關視頻!下面是我在項目中的執行個體,供大家參考。

首先定義一個DBHelper繼承SQLiteOpenHelper:

package com.cloay.down.db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;/** * 儲存下載檔案資訊的DBHelper * DBHelper.java * @author cloay * 2011-11-18 */public class DBHelper extends SQLiteOpenHelper {// download.db-->資料庫名public DBHelper(Context context) {super(context, "download.db", null, 1);}/** * 在download.db資料庫下建立一個download_info表格儲存體下載資訊 * state 定義四種下載的狀態:初始化狀態1,正在下載狀態2,暫停狀態3,下載完成4 */@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create table download_info(_id integer PRIMARY KEY AUTOINCREMENT, url char, "+ "file_size integer, compelete_size integer, state integer)");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}}

然後定義一個DBHelperUtil實現一些常見對資料庫的操作功能:

package com.cloay.down.utils;import java.util.ArrayList;import java.util.List;import com.cloay.down.db.DBHelper;import com.cloay.down.entity.FileInfo;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;/** * 資料庫工具類,實現資料庫的尋找,刪除,更新等功能 * DBHelperUtil.java * @author cloay * 2011-11-18 */public class DBHelperUtil {private DBHelper dbHelper;    public DBHelperUtil(Context context) {        dbHelper = new DBHelper(context);            }    /**     * 查看資料庫中是否有資料     * @param urlstr     * 下載連結     * @return     */    public boolean isHasInfors(String urlstr) {        SQLiteDatabase database = dbHelper.getReadableDatabase();        String sql = "select count(*)  from download_info where url=?";        Cursor cursor = database.rawQuery(sql, new String[] { urlstr });        cursor.moveToFirst();        int count = cursor.getInt(0);        cursor.close();        closeDb();        if(count == 0){        return true;        }        else{        return false;        }    }    /**     * 擷取資料庫中的資料數     */    public int getLoadInfoCount(){    int i = 0;    SQLiteDatabase database = dbHelper.getReadableDatabase();        String sql = "select count(*)  from download_info";        Cursor cursor = database.rawQuery(sql, new String[] {});        while(cursor.moveToNext()){        i++;        }        closeDb();return i;    }        /**     * 查詢資料庫中所有資料     */    public List<FileInfo> getLoadInfos (){    List<FileInfo> fileInfos = new ArrayList<FileInfo>();    SQLiteDatabase database = dbHelper.getReadableDatabase();        String sql = "select url,file_size,compelete_size,state from download_info";        Cursor cursor = database.rawQuery(sql, new String[] {});        while (cursor.moveToNext()) {        FileInfo info = new FileInfo(cursor.getString(0), cursor.getInt(1), cursor.getInt(2), cursor.getInt(3));        fileInfos.add(info);        }        cursor.close();        closeDb();    return fileInfos;    }        /**     * 儲存 下載的具體資訊     * @param info     * 下載檔案資訊     */    public void saveInfos(FileInfo info) {        SQLiteDatabase database = dbHelper.getWritableDatabase();        String sql = "insert into download_info(file_size, compelete_size, url, state) values (?,?,?,?)";        Object[] bindArgs = {info.getFileSize(), info.getCompleteSize(), info.getUrlstring(), info.getState()};        database.execSQL(sql, bindArgs);    }    /**     *  得到下載具體資訊     * @param urlstr     * 下載連結url     * @return     */    public FileInfo getInfo(String urlstr) {    FileInfo info = null;        SQLiteDatabase database = dbHelper.getReadableDatabase();        String sql = "select file_size,compelete_size,url,state from download_info where url=?";        Cursor cursor = database.rawQuery(sql, new String[] { urlstr });        while (cursor.moveToNext()) {        info = new FileInfo(cursor.getString(2), cursor.getInt(0), cursor.getInt(1), cursor.getInt(3));        }        cursor.close();        closeDb();        return info;    }    /**    * 更新資料庫中的下載資訊     */    public void updataInfos(int compeleteSize, int state, String urlstr) {        SQLiteDatabase database = dbHelper.getReadableDatabase();        String sql = "update download_info set compelete_size=?,state=? where url=?";        Object[] bindArgs = { compeleteSize, state, urlstr };        database.execSQL(sql, bindArgs);    }    /**     * 關閉資料庫     */    public void closeDb() {        dbHelper.close();   }    /**    * 下載完成後刪除資料庫中的資料     */    public void delete(String url) {       SQLiteDatabase database = dbHelper.getReadableDatabase();        database.delete("download_info", "url=?", new String[] { url });    }}

通過對資料庫的操作我們就可以儲存檔案當前的相關資訊,進而實現我們對檔案下載的管理功能。

有問題請留言,大家一起交流學習!

說明:轉載請註明出處!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.