setContentView(R.layout.activity_main);
init();
setAction();
}
/** 初始化View */
private void init() {
createDataBase = (Button) findViewById(R.id.create_database);
addData = (Button) findViewById(R.id.add_data);
updateData = (Button) findViewById(R.id.update_data);
deleteData = (Button) findViewById(R.id.delete_data);
queryData = (Button) findViewById(R.id.query_data);
replaceData = (Button) findViewById(R.id.replace_data);
/** 通过构造函数的参数将数据库信息指定成功;做数据库升级时要改版本号 1改为2 */
dbHelper = new MyDataBaseHelper(this, “BookStore.db”, null, 2);
}
/** 设置监听事件 */
private void setAction() {
createDataBase.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dbHelper.getWritableDatabase();
}
});
addData.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
/** 开始组装第一组数据 */
values.put(“name”, “the Da Vinci Code”);
values.put(“author”, “dan Brown”);
values.put(“pages”, 454);
values.put(“price”, 16.96);
/** 插入第一条数据 */
db.insert(“book”, null, values);
values.clear();
/** 开始组装第二组数据 */
values.put(“name”, “the Last Symbol”);
values.put(“author”, “dan Brown”);
values.put(“pages”, 510);
values.put(“price”, 19.96);
/** 插入第二条数据 */
db.insert(“book”, null, values);
Toast.makeText(MainActivity.this, “inset succeeded----”,
Toast.LENGTH_SHORT).show();
}
});
updateData.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(“price”, 10.99);
/** 以下的意思是将名the Da Vinci Code这本书的价格改为10.99 */
db.update(“Book”, values, “name = ?”,
new String[] { “the Da Vinci Code” });
Toast.makeText(MainActivity.this, “update succeeded+++++++”,
Toast.LENGTH_SHORT).show();
}
});
deleteData.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
/** 删除页数超过500页的书籍 */
db.delete(“Book”, “pages > ?”, new String[] { “500” });
Toast.makeText(MainActivity.this, “delete succeeded$$$$$$$”,
Toast.LENGTH_SHORT).show();
}
});
queryData.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
/** 查询表中所有的数据 */
Cursor cursor = db.query(“Book”, null, null, null, null, null,
null);
if (cursor.moveToFirst()) {
do {
String name = cursor.getString(cursor
.getColumnIndex(“name”));
String author = cursor.getString(cursor
.getColumnIndex(“author”));
int pages = cursor.getInt(cursor
.getColumnIndex(“pages”));
double price = cursor.getDouble(cursor
.getColumnIndex(“price”));
} while (cursor.moveToNext());
}
cursor.close();
Toast.makeText(MainActivity.this, “query succeeded@@@@@@”,
Toast.LENGTH_SHORT).show();
}
});
/** 使用事务进行数据的更换,这样会比较安全 */
replaceData.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
/** 开启事务 作用:删除表里面的数据的时,要么成功,要么失败,两个事件只能同时完成 */
db.beginTransaction();
try {
db.delete(“Book”, null, null);
if (true) {
/** 这里抛出一个异常,让事务失败 */
throw new NullPointerException();
}
@SuppressWarnings(“unused”)
ContentValues values = new ContentValues();
values.put(“name”, “Game of Thrones”);
values.put(“author”, “George Martin”);
values.put(“pages”, 720);
values.put(“price”, 20.55);
db.insert(“Book”, null, values);
/** 事务已经执行完成 */
db.setTransactionSuccessful();
} catch (Exception e) {
e.printStackTrace();
} finally {
/** 结束事务,在finally里面结束,无论如何都会执行到这边的 */
db.endTransaction();
}
}
});
}
}
直接上代码
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;
/**
*
-
@项目名:DataBaseTest
-
@类名称:MyDataBaseHelper
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
![](https://img-blog.csdnimg.cn/img_convert/dba4c5ba895e431cd18719c20a8842bd.jpeg)
面试复习笔记:
这份资料我从春招开始,就会将各博客、论坛。网站上等优质的Android开发中高级面试题收集起来,然后全网寻找最优的解答方案。每一道面试题都是百分百的大厂面经真题+最优解答。包知识脉络 + 诸多细节。
节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
《960页Android开发笔记》
《1307页Android开发面试宝典》
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。
《507页Android开发相关源码解析》
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。
[外链图片转存中…(img-IU9W6a6V-1713410069917)]
《507页Android开发相关源码解析》
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!