数据库的操作,需用到数据库类SQLiteDatabase,重写管理员类SQLiteOpenHelper,用Cursor查询数据

一、操作数据库的辅助类,包含打开、关闭、增删改查方法

//自定义的数据库的接口,其中包含SQLiteHelper

public class NotesDbAdapter

{

//创建数据库所需语句及相关字符串

private static final String DATABASE_NAME = "note.db";

private static final int DATABASE_VERSION = 1;

private static final String DATABASE_TABLE = "note";

private static final String DATABASE_CREATE =

"create table note("

+"_id INTEGER PRIMARY KEY,"

+"note TEXT,"

+"date TEXT,"

+"created INTEGER,"

+"modified INTEGER"

+");";

//数据库对象

private SQLiteDatabase db;

//定义数据库管理员类

private static class DatabaseHelper extends

SQLiteOpenHelper

{

public DatabaseHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

// TODO Auto-generated constructor stub

}

@Override

public void onCreate(SQLiteDatabase db) {

// TODO Auto-generated method stub

db.execSQL(DATABASE_CREATE);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int

newVersion) {

// TODO Auto-generated method stub

db.execSQL("DROP TABLE IF EXISTS "+DATABASE_TABLE);

onCreate(db);

}

}

//抽象界面

private Context mCtx =

null;

//数据库管理员对象

private DatabaseHelper dbHelper ;

//数据库各列名称

public static final String KEY_ROWID = "_id";

public static final String KEY_NOTE = "note";

public static final String KEY_DATE = "date";

public static final String KEY_CREATED = "created";

public NotesDbAdapter(Context ctx) {

this.mCtx = ctx;

}

//打开数据库

public NotesDbAdapter open () throws SQLException {

dbHelper = new DatabaseHelper(mCtx);

db = dbHelper.getWritableDatabase();

return this;

}

//关闭数据库

public void close() {

dbHelper.close();

}

//查询所有项目,返回一个Cursor

public Cursor getall()

{

return db.query(DATABASE_TABLE,

new String[] {KEY_ROWID, KEY_NOTE, KEY_DATE,

KEY_CREATED},

null, null, null, null, null);

}

// 新增一项

public long create(String Note,String mDate) {

Date now = new Date();

ContentValues args = new ContentValues();

args.put(KEY_NOTE, Note);

args.put(KEY_DATE, mDate);

args.put(KEY_CREATED, now.getTime());

return db.insert(DATABASE_TABLE, null, args);

}

//删除一项

public boolean delete(long rowId) {

return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null)

> 0;

}

//查询一项

public Cursor get(long rowId) throws SQLException

{

Cursor mCursor = db.query(true,

DATABASE_TABLE,

new String[] {KEY_ROWID, KEY_NOTE, KEY_DATE,

KEY_CREATED},

KEY_ROWID + "=" + rowId,

null, null, null, null, null);

if (mCursor != null) {

mCursor.moveToFirst();

}

return mCursor;

}

//修改一项

public boolean update(long rowId, String note,String

date)

{

ContentValues args = new ContentValues();

args.put(KEY_NOTE, note);

args.put(KEY_DATE, date);

return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId,

null) > 0;

}

}

二、在主类中通过写好的辅助类操作数据库

private NotesDbAdapter mDbHelper;

private Cursor mNotesCursor;

//用自定义的数据库接口提供的方法打开数据库

mDbHelper = new NotesDbAdapter(this);

mDbHelper.open();

//获取cursor,当需要表中数据时再通过cursor访问

mNotesCursor = mDbHelper.getall();

startManagingCursor(mNotesCursor);

//实例化各list存储数据库各列内容

aryListNoteContent=new

ArrayList();

aryListNoteDate=new

ArrayList();

aryListNoteID=new

ArrayList();

linkListNoteIcon=new

LinkedList();

//先用Cursor获取内容,装入ArrayList,最后关闭cursor

try

{

if(mNotesCursor.moveToFirst())

{

do

{

//获取数据库rowID,以便操作数据库

String noteId=mNotesCursor.getString(0);

String noteContent=mNotesCursor.getString(1);

String noteDate=mNotesCursor.getString(2);

aryListNoteID.add(noteId);

aryListNoteContent.add(noteContent);

aryListNoteDate.add(noteDate);

linkListNoteIcon.add(getApplicationContext().getResources().getDrawable(R.drawable.icon));

}while(mNotesCursor.moveToNext());

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally

{

mNotesCursor.close();

}

//删除一项

String RowId=aryListNoteID.get(info.position);

mDbHelper.delete(Long.parseLong(RowId));

//新增一项

mDbHelper.create(String,String);

//查询一项

//若该行id不为空,返回该行cursor,根据cursor读取内容,读取完毕关闭cursor

if (mRowId != null) {

Cursor cursor = mDbHelper.get(mRowId);

startManagingCursor(cursor);

try

{

mEditText.setText(cursor.getString(

cursor.getColumnIndexOrThrow(NotesDbAdapter.KEY_NOTE)

));

} catch (IllegalArgumentExceptione) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally

{

cursor.close();

}

}

//修改一项

mDbHelper.update(mRowId, String,String);

android sqlite 示例,android SQLite数据库使用示例相关推荐

  1. android sqlite assets,使用GreenDao加载assets下sqlite数据库的示例

    应用场景 已有的.某类型数据(如行政区域关系)保存在sqlite中,sqlite数据库文件保存在assets目录下,APP需要读取该数据库中的数据 工具 实例 要点介绍 APP无法直接读取assets ...

  2. android spinner 按钮,android sqlite和spinner的用法示例

    在此示例中,我们在单击按钮时添加了标签,并在微调器上显示了所有添加的标签.如上例所示,需要扩展SQLiteOpenHelper类以在sqlite上执行操作. 我们在DatabaseHandler类中重 ...

  3. sqlite数据库android使用教程,Android开发教程之 SQLite数据库的使用

    在开发Android应用程序时经常需要存储数据,Android系统提供了SQLite数据库,还提供了SQLiteOpenHelper类,使我们可以很方便的操作数据库.通过一个例子来说明在Android ...

  4. Android 绿豆通讯录【 SQLite数据库(增删改查、展示数据) + ListView数据展示控件(展示所有数据) 】

    前情提要:Android 数据库(SQLite) [简介.创建.使用(增删改查.事务.实战演练).数据显示控件(ListView.Adapter.实战演练-绿豆通讯录)] https://blog.c ...

  5. 基于sqlite的android数据库编程,Android编程之SQLite数据库操作方法详解

    Android编程之SQLite数据库操作方法详解 发布时间:2020-09-07 12:33:04 来源:脚本之家 阅读:85 作者:低调小一 本文实例讲述了Android SQLite数据库操作方 ...

  6. Android 绿豆通讯录【SQLite数据库---数据库(增删改查、展示数据)】

    前情提要:Android 数据库(SQLite) [简介.创建.使用(增删改查.事务.实战演练).数据显示控件(ListView.Adapter.实战演练-绿豆通讯录)] https://blog.c ...

  7. Android 第十一课 SQlite 数据库存储

    Android 为了让我们能够更加方便的管理数据库,特意提供了一个SQLiteOpenHelper帮助类,通过借助这个类就可以非常简单的对数据库进行创建和升级. SQLiteOpenHelper是一个 ...

  8. Android数据库 分页查询,Android之怎么使用SQLite数据库(增、删、改、查、分页等)以及ListView显示数据(转)...

    由于刚接触android开发,故此想把学到的基础知识记录一下,以备查询,故此写的比较啰嗦: 步骤如下: 一.介绍: 此文主要是介绍怎么使用android自带的数据库SQLite,以及把后台的数据用Li ...

  9. android:Android中用文件初始化sqlite数据库(zz)

        很多时候在应用安装初始化时,需要创建本地数据库,同时为数据库添加数据,之后再从数据库中读取数据. 这里有2个思路 1.先在本地创建一个能支持android使用的sqlite数据库文件,启动时, ...

  10. Android数据存储之SQLite数据库存储

    Android中每一个数据库对创建它的应用程序包套件来说都是私有的,默认情况下其他应用程序无法直接访问此私有数据库.所有的数据库文件存放在手机中的/data/data/package_name/dat ...

最新文章

  1. SQL Server 2000安装时不出现安装界面,进程中存在解决
  2. 分布式服务框架-原理与实践:14---流量控制-学习笔记(理论篇)
  3. 一作解读:EID-2017-宏基因组测序在新发腹泻病毒鉴定中的应用
  4. 3、ShardingSphere 之 Sharding-JDBC 实现水平分库
  5. CF1516E. Baby Ehab Plays with Permutations(组合数学)
  6. MFC----ListBox用法
  7. 苹果或将推中国特色版iPhone 削掉了Face ID改用屏幕指纹
  8. mybatis的动态sql学习注意点!!!
  9. 官宣!DolphinScheduler 毕业成为 Apache 软件基金会顶级项目
  10. vba excel 取得chart保存图片_保存Excel中的图片
  11. Windows中安装Electron说明
  12. sourceTree中git工作流使用
  13. cobar mysql_cobar mysql 高可用
  14. 放大电路中反馈及类型的判断
  15. 工业物联网技术体系包括哪些
  16. K-means(tri)利用三角不等式性质加速k-means
  17. T1005: 地球人口承载力估计(信息学一本通C++)
  18. 伺服驱动器的工作原理及伺服驱动器的常见接线方法
  19. CTF之PHP基础学习篇(一)
  20. javac java编译-g

热门文章

  1. three.js 把geometry转换成BufferGeometry
  2. SpringBoot使用Slf4j+Log4j2完成项目的日志记录
  3. Iterator主要有三个方法:hasNext()、next()、remove()详解
  4. java异常不懂,看不懂的异常提示啊
  5. source code怎么用_code-builder代码生成器
  6. python获取文件夹名_python基础之获取文件目录及名称
  7. Spring Cloud Alibaba —— Nacos Config 配置中心
  8. 史上最容易理解的暴力递归和动态规划~~
  9. 找对象年龄差多大最好_女生找对象到底最看重什么?调查了全球6万多名女性的结果是......
  10. pythonista_Pythonista20190325伤不起