SQLiteOpenHelper数据库的创建or升级or增删改查

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

总结

【Android 详细知识点思维脑图(技能树)】

我个人是做Android开发,已经有十来年了,目前在某创业公司任职CTO兼系统架构师。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

最后,赠与大家一句话,共勉!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

[外链图片转存中…(img-QoxrurUv-1715874897389)]

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

最后,赠与大家一句话,共勉!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 30
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值