一、Android应用中的数据库——SqLite
导语:知其然,更要知其一定,对于一名安卓开辟的程序员来说,相识安卓手机体系中的存储是很告急的一部门,而sqlite就是手机自带的轻量级数据库,其作用和场景如下:
- 购物:离线下,查看一下app的数据,有相称一部门是存储在数据库中的,可以购物APP下存储的购物车商品
- 谈天APP:好比离线下的谈天APP,其可以缓存账号和密码
二、使用SqLite进行开辟
注:在SqLite的创建使用中,SQLiteOpenHelper类是必不可少的,它用于帮助我们简化创建和更新数据库版本的操作,其使用也很简单,必要创建一个类其继承即可。
步骤1.创建自定义类DatabaseHelper去继承SQLiteOpenHelper
代码如下(示例):
- /**
- * 数据库的辅助类——方便更好的创建和更新数据库
- */
- public class DatabaseHelper extends SQLiteOpenHelper {
- /**
- *
- * @param context
- * 参数1:上下文 参数2:数据库名称 参数3:默认游标 参数4:版本号
- */
- public DatabaseHelper(@Nullable Context context) {
- super(context,"database",null,1);
- }
- //数据库只在第一次创建的时候调用该方法
- @Override
- public void onCreate(SQLiteDatabase db) {
- Log.d(TAG, "创建数据库: ");
- }
- /**
- * 升级数据库版本的时候调用
- * @param db The database.
- * @param oldVersion The old database version.
- * @param newVersion The new database version.
- */
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- Log.d(TAG, "更新数据库: ");
- }
- }
复制代码 主要代码:
其1:
- //数据库只在第一次创建的时候调用该方法
- @Override
- public void onCreate(SQLiteDatabase db) {
- Log.d(TAG, "创建数据库: ");
- }
复制代码 该方法只在数据库database第一次创建的时候调用,可以在该方法内里编写数据库所必要的字段
- //1.创建字段
- String sql = "create table " + Constants.TABLE_NAME + "(_id integer primary key,name varchar(255),age integer,salary integer)";
- //2.执行sql语句
- db.execSQL(sql);
复制代码 其2:
- /**
- * 升级数据库版本的时候调用
- */
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- Log.d(TAG, "更新数据库: ");
- }
复制代码 该方法是在数据库进行版本更新的时候调用(只能一次性添加一个字段)
- String sql;
- switch (oldVersion){
- case 1:
- sql = "alter table " + Constants.TABLE_NAME + " add phone integer";//TODO 一次性只能更改一条
- db.execSQL(sql);
- break;
- case 2:
- sql="alter table " + Constants.TABLE_NAME + " add address varchar";//注意空格
- db.execSQL(sql);
- break;
- case 3:
- break;
- }
复制代码 步骤2.创建操作数据库的类Dao.java
- /**
- * 操作数据库的类——增删改查
- */
- public class Dao {
- private static final String TAG = "Dao";
- private final DatabaseHelper mHelper;
- public Dao(Context context) {
- //创建数据库
- mHelper = new DatabaseHelper(context);
- }
- /**
- * 插入数据 数据不要写死
- */
- public void insert() {
-
- }
- /**
- * 删除数据
- */
- public void delete() {
- }
- /**
- * 修改数据
- */
- public void update() {
- }
- /**
- * 查询数据
- */
- public void query() {
- }
- }
复制代码 该类只要作用是进行增编削查操作
步骤3.创建数据库
- public class MainActivity extends AppCompatActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- //创建数据库
- DatabaseHelper helper=new DatabaseHelper(this);
- helper.getWritableDatabase();
- }
- }
复制代码 关键代码:
- //创建数据库
- DatabaseHelper helper=new DatabaseHelper(this);
- helper.getWritableDatabase();
复制代码 实行该代码事后,可以在/data/data/包名/databases下找到该数据库
步骤4.补全代码
- /**
- 1. 数据库的辅助类——方便更好的创建和更新数据库
- */
- public class DatabaseHelper extends SQLiteOpenHelper {
- private static final String TAG=DatabaseHelper.class.getSimpleName();
- /**
- *
- * @param context
- * 参数1:上下文 参数2:数据库名称 参数3:默认游标 参数4:版本号
- */
- public DatabaseHelper(@Nullable Context context) {
- super(context,Constants.DATABASE_NAME,null,Constants.VERSION_CODE);
- }
- //数据库只在第一次创建的时候调用该方法
- @Override
- public void onCreate(SQLiteDatabase db) {
- Log.d(TAG, "创建数据库: ");
- //1.创建字段
- String sql = "create table " + Constants.TABLE_NAME + "(_id integer primary key,name varchar(255),age integer,salary integer)";
- //2.执行sql语句
- db.execSQL(sql);
- }
- /**
- * 升级数据库的时候调用
- * @param db The database.
- * @param oldVersion The old database version.
- * @param newVersion The new database version.
- */
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- Log.d(TAG, "更新数据库: ");
- String sql;
- switch (oldVersion){
- case 1:
- sql = "alter table " + Constants.TABLE_NAME + " add phone integer";//TODO 一次性只能更改一条
- db.execSQL(sql);
- break;
- case 2:
- sql="alter table " + Constants.TABLE_NAME + " add address varchar";//注意空格
- db.execSQL(sql);
- break;
- case 3:
- break;
- }
- }
- }
复制代码- /**
- 1. 操作数据库的类——增删改查
- */
- public class Dao {
- private static final String TAG = "Dao";
- private final DatabaseHelper mHelper;
- public Dao(Context context) {
- //创建数据库
- mHelper = new DatabaseHelper(context);
- }
- /**
- * 插入数据 数据不要写死
- */
- public void insert() {
- SQLiteDatabase db = mHelper.getWritableDatabase();//等会测试一下这里是否可以重用
- ContentValues contentValues = new ContentValues();//ContentValues存储数据库数据的类
- contentValues.put("_id", 2);
- contentValues.put("name", "jie");
- contentValues.put("age", 28);
- contentValues.put("salary", 200);
- contentValues.put("phone", 2122);
- db.insert(Constants.TABLE_NAME, null, contentValues);
- db.close();
- }
-
- /**
- * 删除数据
- */
- public void delete() {
- SQLiteDatabase db = mHelper.getWritableDatabase();//等会测试一下这里是否可以重用
-
- int deleteNums = db.delete(Constants.TABLE_NAME, null, null);
- Log.d(TAG, "delete个数: "+deleteNums);
- db.close();
- }
- /**
- * 修改数据
- */
- public void update() {
- SQLiteDatabase db = mHelper.getWritableDatabase();
- ContentValues contentValues = new ContentValues();
- contentValues.put("phone", "110");
- String selection = "_id = ?";//符合修改条件的
- String[] selectionArgs = {"1"};//指定更改后的数据
- db.update(Constants.TABLE_NAME, contentValues, selection, selectionArgs);//指定某一个值更改
- db.close();
- }
- /**
- * 查询数据
- */
- public void query() {
- SQLiteDatabase db = mHelper.getWritableDatabase();
- Cursor query = db.query(Constants.TABLE_NAME, null, null, null, null, null, null);
- while (query.moveToNext()){
- int id = query.getInt(0);
- String name = query.getString(1);
- Log.d(TAG, "id===: "+id+" name==="+name);
- }
- query.close();
- db.close();
- }
- }
复制代码- /**
- * 常量类
- */
- public class Constants {
- public static final String DATABASE_NAME="database_name";//数据库名称
- public static final int VERSION_CODE=2;//数据库版本
- public static final String TABLE_NAME="database_name";//表名
- }
复制代码- public class MainActivity extends AppCompatActivity {
- private Dao dao;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- //创建数据库
- DatabaseHelper helper=new DatabaseHelper(this);
- helper.getWritableDatabase();
- dao = new Dao(this);
- dao.insert();
- }
- }
复制代码 天生的数据库截图:
三、SqLite数据库中的事务
事务具备安全性和高效性
安全性:可以保持数据的同等,好比可以办理转账的时候停电等突发情况,账号数据不统一问题
高效性:使用事务,代码实行速度更快
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |