android数据库操作

package cn.hackcoder.beautyreader.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

/**
 * Created by hackcoder on 15-1-25.
 */
public class DataBaseHelper extends SQLiteOpenHelper {
    private static final String dbName = "sample.db";
    private static int dbVersion = 1;

    public DataBaseHelper(Context context) {
        super(context,dbName,null,dbVersion);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.d("===========","数据库初始化");
        //建表
        String sql = "create table if not exists tb_article(id integer primary key autoincrement,title varchar(50),content TEXT,url varchar(50),page integer)";
        db.execSQL(sql);
    }

    /**
     *
     * @param db
     * @param oldVersion
     * @param newVersion
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

package cn.hackcoder.beautyreader.service;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import java.util.ArrayList;
import java.util.List;

import cn.hackcoder.beautyreader.db.DataBaseHelper;
import cn.hackcoder.beautyreader.model.Article;

/**
 * Created by hackcoder on 15-1-25.
 */
public class ArticleService {

    private DataBaseHelper dataBaseHelper;
    private SQLiteDatabase readableDatabase;
    private SQLiteDatabase writableDatabase;

    public ArticleService(Context context) {
        dataBaseHelper = new DataBaseHelper(context);
    }

    public void add(Article article) {
        String sql = "insert into tb_article(id,title,content,url,page) values(?,?,?,?,?)";
        getReadableDatabase().execSQL(sql, new Object[]{null, article.getTitle(), article.getContent(), article.getUrl(), article.getPage()});
    }

    public void delete(int id) {
        String sql = "delete from tb_article where id =?";
        getReadableDatabase().execSQL(sql, new Object[]{id});
    }

    public void deleteAll() {
        String sql = "delete from tb_article";
        getReadableDatabase().execSQL(sql,null);
    }
    public void update(Article article) {
        String sql = "update tb_article set title=?,content=?,url=?,page = ? where id =?";
        getReadableDatabase().execSQL(sql, new Object[]{article.getTitle(), article.getContent(), article.getUrl(), article.getPage(), article.getId()});
    }

    public void updateContentOfUrl(String url,String content){
        String sql = "update tb_article set content=? where url =?";
        getReadableDatabase().execSQL(sql, new Object[]{content,url});
    }
    public Article find(int id) {
        Article article = new Article();
        String sql = "select id,title,content,url,page from tb_article where id = ?";
        Cursor cursor = getReadableDatabase().rawQuery(sql, new String[]{String.valueOf(id)});
        if (cursor.moveToNext()) {
            article.setId(id);
            article.setTitle(cursor.getString(cursor.getColumnIndex("title")));
            article.setContent(cursor.getString(cursor.getColumnIndex("content")));
            article.setUrl(cursor.getString(cursor.getColumnIndex("url")));
            article.setPage(cursor.getInt(cursor.getColumnIndex("page")));
            cursor.close();
            return article;
        }
        cursor.close();
        return null;
    }

    public List<Article> findByUrl(String url) {
        List<Article> articles = new ArrayList<Article>();
        String sql = "select id,title,content,url,page from tb_article where url = ?";
        Cursor cursor = getReadableDatabase().rawQuery(sql, new String[]{url});
        while (cursor.moveToNext()) {
            Article article = new Article();
            article.setId(cursor.getInt(cursor.getColumnIndex("id")));
            article.setTitle(cursor.getString(cursor.getColumnIndex("title")));
            article.setContent(cursor.getString(cursor.getColumnIndex("content")));
            article.setUrl(cursor.getString(cursor.getColumnIndex("url")));
            article.setPage(cursor.getInt(cursor.getColumnIndex("page")));
            articles.add(article);
        }
        cursor.close();
        return articles;
    }
    public int getCountOfPage(int page){
        String sql = "select count(*) from tb_article where page = ?";
        Cursor cursor = getReadableDatabase().rawQuery(sql, new String[]{String.valueOf(page)});
        cursor.moveToFirst();
        int count = cursor.getInt(0);
        cursor.close();
        return count;
    }

    public List<Article> getArticlesOfPage(int curPage){
        List<Article> articles = new ArrayList<Article>();
        String sql = "select id,title,content,url,page from tb_article where page = ?";
        Cursor cursor = getReadableDatabase().rawQuery(sql,new String[]{String.valueOf(curPage)});
        while(cursor.moveToNext()){
            Article article = new Article();
            article.setId(cursor.getInt(cursor.getColumnIndex("id")));
            article.setTitle(cursor.getString(cursor.getColumnIndex("title")));
            article.setContent(cursor.getString(cursor.getColumnIndex("content")));
            article.setUrl(cursor.getString(cursor.getColumnIndex("url")));
            article.setPage(cursor.getInt(cursor.getColumnIndex("page")));
            articles.add(article);
        }
        cursor.close();
        return articles;
    }
    public int countOfSum() {
        String sql = "select count(*) from tb_article";
        Cursor cursor = getReadableDatabase().rawQuery(sql, null);
        cursor.moveToFirst();
        int count = cursor.getInt(0);
        cursor.close();
        return count;
    }

    public List<Article> getArticles(int start, int pageSize) {
        List<Article> articles = new ArrayList<Article>();
        String sql = "select id,title,content,url,page from tb_article limit ?,?";
        Cursor cursor = getReadableDatabase().rawQuery(sql,new String[]{String.valueOf(start),String.valueOf(pageSize)});
        while(cursor.moveToNext()){
            Article article = new Article();
            article.setId(cursor.getInt(cursor.getColumnIndex("id")));
            article.setTitle(cursor.getString(cursor.getColumnIndex("title")));
            article.setContent(cursor.getString(cursor.getColumnIndex("content")));
            article.setUrl(cursor.getString(cursor.getColumnIndex("url")));
            article.setPage(cursor.getInt(cursor.getColumnIndex("page")));
            articles.add(article);
        }
        cursor.close();
        return articles;
    }

    public void closeDB() {
        if (readableDatabase != null && readableDatabase.isOpen()) {
            readableDatabase.close();
        }
        if (writableDatabase != null && writableDatabase.isOpen()) {
            writableDatabase.close();
        }
    }

    public SQLiteDatabase getReadableDatabase() {
        return dataBaseHelper.getReadableDatabase();
    }

    public SQLiteDatabase getWritableDatabase() {
        return dataBaseHelper.getWritableDatabase();
    }
}
时间: 2024-10-19 14:48:40

android数据库操作的相关文章

如何将Android数据库操作通用化(三)

概述 悠悠绿水傍林侵日落观山四望回 幽林古寺孤明月冷井寒泉碧映台 鸥飞满浦渔舟泛鹤伴闲亭仙客来 游径踏花烟上走流溪远棹一篷开 概述 一个不小心都写了三篇了,也不知道大家还看得懂不?如果看不懂最好给我留个言,我好下一次改正. 接着上次的说,准备工作都已经做好了,现在咱们就要开始着手解决阻挡Android数据库操作通用化的五个问题了. 我们先回顾一下问题: 问题1:表名的获取 问题2:如何将实体中的数据,按照对应关系导入到数据库中 问题3:明确实体中主键是谁?获取到主键中封装的值 问题4:如何将数据

Android数据库操作_表格显示

Android数据库操作_表格显示 显示表格布局 完成后效果如下: 首先需要一个主布局文件main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation=&quo

如何将Android数据库操作通用化(一)

概述 在开始考虑Android的数据库操作之前,我们先回想一下Web方面的数据库操作.如果我们只是停留在JDBC的简单使用和封装上(比如纯JDCB,或者DBUtils),即使我们对数据库的增删改查操作进行了接口的抽取,代码依旧会和业务有很强的耦合性. 经过我们分析,解除耦合性的关键在于如何解决自动映射"实体类 与 数据库表"之间的对应关系.如果能够做到这一步,那么我们就能够更好的解耦了,也能降低我们的代码重复率. 如果我们再跨前一步,使用更为优秀的框架(比如:Hibernate),这一

android菜鸟学习笔记20----Android数据存储(四))Android数据库操作

Android内置了一个名为SQLite的关系型数据库,这是一款轻量型的数据库,操作十分简便.SQLite与别的数据库不同的是,它没有数据类型.可以保存任何类型的数据到你所想要保存的任何表的任何列中.但它又支持常见的类型比如: NULL, VARCHAR, TEXT, INTEGER, BLOB, CLOB...等. 唯一的例外是:integer primary key 此字段只能存储64位整数. 在JAVA项目中,要使用JDBC操作数据库需要加载数据库驱动,连接数据库等操作.Android简化

android数据库操作之直接读取db文件

在对数据库操作时,常用的有两种方法: 1.在代码中建库.建表: 2.直接将相关库.表建立好,将db文件拷贝至assets目录下: 现在来看看第二种方法: private String GetDataBasePath(Context context) { String packageName = context.getPackageName(); //Log.i("PackName", packageName); // String DB_PATH = String.format(&qu

android 数据库操作详解

请看郭大神的八篇专栏,包含sql语句  android封装的databasehelper 和郭大神自己的LitePal  三种使用详解 http://blog.csdn.net/column/details/android-database-pro.html

android数据库事务操作

在android应用程序开发中,在使用到数据库的时候,事务处理是非常重要的. 首先android数据库操作(特别是写操作)是非常慢的,将所有操作打包成一个事务能大大提高处理速度. 其次是保证数据的一致性,让一个事务中的所有操作都成功执行,或者失败,或者所有操作回滚. 标签:Android 事务 [1].[代码] [Java]代码 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 mDatabase.beginTransaction(); try{   //在这里

Android打造属于自己的数据库操作类。

1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要去做增删改查的操作的时候,就得通过getWritableDatabase获取一个SQLiteDataBase然后老老实实去写操作值的put以及查询返回的Cursor处理,其实我们可以搞一个对象来帮我们干这些事情,打造属于你自己的数据库操作类. 2.操作类的初显形 假设现在我们什么都没有,我们要去搞一

Android Afinal框架学习(一) FinalDb 数据库操作

框架地址:https://github.com/yangfuhai/afinal 对应源码: net.tsz.afinal.annotation.sqlite.* net.tsz.afinal.db.sqlite.* net.tsz.afinal.db.table.* net.tsz.afinal.utils.ClassUtils.net.tsz.afinal.utils.FieldUtils FinalDb 建库 FinalDb db = FinalDb.create(context, "my