Android开发_记事本数据库
Posted zsc02
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发_记事本数据库相关的知识,希望对你有一定的参考价值。
Android中的一些数据库操作
APP中的数据库
知识点
ListView
https://blog.csdn.net/indeedes/article/details/119530068
开发过程
需求
可以写并保存多个输入的笔记内容
按照一定顺序显示出来
如果屏幕不够可以下拉
输入的内容可以增删改查
APP核心:ListView
ListView简介
在Android开发中,ListView是一个比较常用的控件。它以列表的形式 展示具体数据内容,并且能够根据数据的长度自适应屏幕显示。
ListView简单用法
根据:
所以要创建一个结构,一个class
需要创建一个数据库来保存笔记,以此来保证之前的内容不被覆盖
先创建一个Note Class
package com.example.note;
public class Note
private long id; //数据库中每篇笔记独一无二的标识(自动增长)
private String content; //内容
private String time; //时间(创建or编辑)
private int tag; //为了分类笔记的标签(娱乐,运动,学习等)
//构造函数 没什么用但要有
public Note()
//同时必须有一个详细的constractor
//因为id需要有自增长的特性,在数据库里面对他进行设置,所以下面不需要初始化
public Note(String content,String time,int tag)
this.content = content;
this.time = time;
this.tag = tag;
//接下来是他们的getter和setter,规范化
public long getId() return id;
public String getContent() return content;
public String getTime() return time;
public int getTag() return tag;
public void setId(long id) this.id = id;
public void setContent(String content) this.content = content;
public void setTime(String time) this.time = time;
public void setTag(int tag) this.tag = tag;
//重写toString的格式,简洁,方便debug
@Override
public String toString()
return content +"\\n"+time.substring(5,16)+" "+id;
接下来需要将它往数据库里面传,还需要另一个Class CRUD(增删改查)
但要先创建数据库
创建一个数据库NoteDatabase
代码:
package com.example.note;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class NoteDatabase extends SQLiteOpenHelper
//定义全局常量,方便命名、debug时候修改
public static final String TABLE_NAME = "notes";
public static final String CONTENT = "content";
public static final String ID = "_id";
public static final String TIME = "time";
public static final String MODE = "mode";
//写一个constractor
//context:上下文
//version:代码更改、升级时改变版本号
public NoteDatabase(Context context)
super(context,"notes",null,1);
@Override
public void onCreate(SQLiteDatabase db)
//下面的function是执行SQL语句
db.execSQL("CREATE TABLE "+TABLE_NAME
+"("
+ID + " INTEGER PRIMARY KEY AUTOINCREMENT," //实现自增长
+CONTENT +"TEXT NOT NULL," //笔记内容,非空
+TIME + "TEXT NOT NULL," //时间 非空
+MODE + "INTEGER DEFAULT 1)" //标签,默认1
);
//升级依靠的function
//检测已有的版本和新的版本,如果不相等则调用下面的function
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)
/*for(int i = oldVersion;i<newVersion;i++)
switch (i)
case 1:
break;
case 2:
updateMode(db);
default:
break;
*/
实现增删改查(CRUD)
package com.example.note;
import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
import java.util.List;
public class CRUD
SQLiteOpenHelper dbHandler; //数据库处理器
SQLiteDatabase db; //数据库
//首先要知道数据库长什么样子
//把数据库中每一列列举出来组成一个数组,方便对其操作
private static final String[] columns =
NoteDatabase.ID,
NoteDatabase.CONTENT,
NoteDatabase.TIME,
NoteDatabase.MODE
;
//constractor
public CRUD(Context context)
dbHandler = new NoteDatabase(context); //初始化,dbHandler 指向 NoteDatabase,并传入context
public void open()
db = dbHandler.getWritableDatabase(); //数据库处理器写入模式,往数据库中写文件
public void close()
dbHandler.close(); //关闭数据库处理器
//核心function之一,添加笔记,把note添加到database
public Note addNote(Note note)
//add a note object to database
ContentValues contentValues = new ContentValues(); //一个专门处理数据的一个类,初始化
contentValues.put(NoteDatabase.CONTENT,note.getContent()); //将参数二获取到的内容放到参数一中
contentValues.put(NoteDatabase.TIME,note.getTime());
contentValues.put(NoteDatabase.MODE,note.getTag());
//插入一个contentValues,返回一个long类型的数据库的id
long insertId = db.insert(NoteDatabase.TABLE_NAME,null,contentValues);
//将id设置为刚才返回的id
note.setId(insertId);
//返回note
return note;
//核心之二,
public Note getNote(long id)
//get a note from database using cursor index
//cursor :游标|指针
//query:database的查询语句(固定格式,死记硬背)
Cursor cursor = db.query(NoteDatabase.TABLE_NAME,columns,NoteDatabase.ID + "=?",
new String[]String.valueOf(id),null,null,null,null
);
if(cursor != null) //找到了
cursor.moveToFirst(); //移到最前面
//创建了一个新note,把之前的覆盖,一个浅复制