Android studio源码,记事本,可做备忘录 纯安卓项目本地数据库sqlite 功能
源码扔到Android Studio直接能跑,建议用Pixel 3 API 29的模拟器,数据持久化表现最稳定。最近搞了个实用的小玩意儿——基于Android Studio的本地备忘录项目,麻雀虽小但登录注册、增删改查这些基本功都齐活。整个项目走的是极简路线,但该有的数据关联、事务处理、UI绑定一个不少。项目直接导入即可运行,推荐Android studio版本大于3.5,运行手机版本9或10。项
Android studio源码,记事本,可做备忘录 纯安卓项目本地数据库sqlite 功能:登陆注册/增删改/注销 项目包含 源码+apk文件+演示视频 温馨提示~ 由于项目具有复制性,售出不退,不包售后 项目直接导入即可运行,推荐Android studio版本大于3.5,运行手机版本9或10 源码可确保无任何问题

最近搞了个实用的小玩意儿——基于Android Studio的本地备忘录项目,麻雀虽小但登录注册、增删改查这些基本功都齐活。直接上硬货,看看怎么用SQLite在安卓里玩转数据存储。

数据库搭建是基本功,直接继承SQLiteOpenHelper搞事情:
public class DBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "memo.db";
private static final int DATABASE_VERSION = 2;
// 用户表
private static final String CREATE_USER_TABLE = "CREATE TABLE users (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT," +
"username TEXT UNIQUE," +
"password TEXT)";
// 备忘录表
private static final String CREATE_MEMO_TABLE = "CREATE TABLE memos (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT," +
"user_id INTEGER," +
"content TEXT," +
"created_at DATETIME DEFAULT CURRENT_TIMESTAMP)";
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_USER_TABLE);
db.execSQL(CREATE_MEMO_TABLE);
}
}
这里整了两个表,用户表和备忘录表通过userid关联。注意DATETIME字段用了CURRENTTIMESTAMP自动记录创建时间,省得手动处理时间戳。

注册登录这活儿用到了SQLite的CRUD基础操作。来看个用户注册的骚操作:
public boolean registerUser(String username, String password) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("username", username);
values.put("password", password); // 实际项目记得加密!
long result = db.insert("users", null, values);
return result != -1;
}
重点在db.insert方法返回的long值,-1表示翻车。实际项目里密码肯定要加盐哈希,这里为了演示简化了。

备忘录的核心操作得配上事务处理才稳:
public void addMemo(int userId, String content) {
SQLiteDatabase db = this.getWritableDatabase();
db.beginTransaction();
try {
ContentValues values = new ContentValues();
values.put("user_id", userId);
values.put("content", content);
db.insertOrThrow("memos", null, values);
db.setTransactionSuccessful();
} catch (Exception e) {
Log.e("DB_ERROR", "添加备忘失败", e);
} finally {
db.endTransaction();
}
}
这里用了insertOrThrow,出错直接抛异常。加上事务三件套(beginTransaction、setTransactionSuccessful、endTransaction)确保操作原子性。

Android studio源码,记事本,可做备忘录 纯安卓项目本地数据库sqlite 功能:登陆注册/增删改/注销 项目包含 源码+apk文件+演示视频 温馨提示~ 由于项目具有复制性,售出不退,不包售后 项目直接导入即可运行,推荐Android studio版本大于3.5,运行手机版本9或10 源码可确保无任何问题

数据展示方面,CursorAdapter和RecyclerView.Adapter是绝配。看个精简版适配器:
public class MemoAdapter extends RecyclerView.Adapter<MemoViewHolder> {
private Cursor cursor;
public void swapCursor(Cursor newCursor) {
if (cursor != null) cursor.close();
cursor = newCursor;
notifyDataSetChanged();
}
@Override
public void onBindViewHolder(MemoViewHolder holder, int position) {
cursor.moveToPosition(position);
String content = cursor.getString(
cursor.getColumnIndexOrThrow("content"));
holder.tvContent.setText(content);
}
}
用swapCursor方法实现数据更新,记得及时关闭旧Cursor防止内存泄漏。Cursor直接绑到RecyclerView上,数据变化自动刷新。
项目里还藏了个小彩蛋——时间轴展示。利用SQLite的日期函数搞事情:
public Cursor getMemosByDate(int userId, String date) {
String query = "SELECT strftime('%H:%M', created_at) as time, content " +
"FROM memos WHERE user_id = ? AND date(created_at) = ? " +
"ORDER BY created_at DESC";
return db.rawQuery(query, new String[]{String.valueOf(userId), date});
}
strftime函数直接格式化时间,配合date()函数按天筛选。这种SQL层面的处理比在Java里操作高效得多。
源码扔到Android Studio直接能跑,建议用Pixel 3 API 29的模拟器,数据持久化表现最稳定。遇到构建问题大概率是Gradle版本不对,改改gradle-wrapper.properties里的distributionUrl就能搞定。
整个项目走的是极简路线,但该有的数据关联、事务处理、UI绑定一个不少。拿来练手二次开发正合适,加个云同步或者分类标签直接能当毕业设计项目使。
更多推荐
所有评论(0)