运行效果:

本文对数据库的建立、更新,数据的插入、更新、查询、删除,及事务的处理进行示例讲解。

代码里有注释帮助理解。

实现代码:

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>    

DBHelper

package com.example.administrator.dbexcise.database;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;/** * Created by Administrator on 2019/6/19. */public class DBHelper extends SQLiteOpenHelper {    public DBHelper(Context context, int version) {        //上下文,数据库文件名,null,版本号        super(context, "person.db", null, version);    }    /**     * 什么时候调用?     *      当数据库文件创建时调用     * 在此方法中做什么?     *      建表,初始化数据     * @param sqLiteDatabase 是操作数据库的对象     */    @Override    public void onCreate(SQLiteDatabase sqLiteDatabase) {        Log.e("TAG", "onCreate: " );        String sql = "create table person (_id integer primary key autoincrement,name varchar,age int)";        sqLiteDatabase.execSQL(sql);    }    /**     * 当传入的版本号大于当前数据库的版本号时调用     * 用于更新数据库     * @param sqLiteDatabase     * @param i     * @param i1     */    @Override    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {        Log.d("TAG", "onUpgrade: ");    }}

MainActivity

package com.example.administrator.dbexcise;import android.content.ContentValues;import android.content.Intent;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;import com.example.administrator.dbexcise.database.DBHelper;public class MainActivity extends AppCompatActivity {    Button button, button2, button3, button4, button5, button6;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button = (Button) findViewById(R.id.bt1);        button2 = (Button) findViewById(R.id.bt2);        button3 = (Button) findViewById(R.id.bt3);        button4 = (Button) findViewById(R.id.bt4);        button5 = (Button) findViewById(R.id.bt5);        button6 = (Button) findViewById(R.id.bt6);    }    /**     * 创建库     *     * @param view     */    public void testCreateDB(View view) {        DBHelper dbHelper = new DBHelper(this, 1);        //获取连接        SQLiteDatabase sqLiteDatabase = dbHelper.getReadableDatabase();        Toast.makeText(this, "创建数据库", Toast.LENGTH_SHORT).show();    }    /**     * 插入数据     *     * @param view     */    public void testInsertDate(View view) {        DBHelper dbHelper = new DBHelper(this,2);        //1.得到连接        SQLiteDatabase sqLiteDatabase = dbHelper.getReadableDatabase();        //2.执行insert        ContentValues values = new ContentValues();        values.put("name","Tom");        values.put("age",21);        //返回插入的id        /**         * 第一个参数:表名         * 第二个参数:null         * 第三个参数:传入的HashMap值         */        long id = sqLiteDatabase.insert("person",null,values);        //3.关闭连接        sqLiteDatabase.close();        //4.提示        Toast.makeText(this,"id= "+id,Toast.LENGTH_SHORT).show();    }    /**     * 删除数据     *     * @param view     */    public void testDeleteDate(View view) {        DBHelper dbHelper = new DBHelper(this,2);        //1.得到连接        SQLiteDatabase sqLiteDatabase = dbHelper.getReadableDatabase();        //2.执行delete        String where = "name = ?";        String[] value = new String[]{ "Tom" };        //返回删除的数量        /**         * 第一个参数:表名         * 第二个参数:删除的where后的语句         * 第三个参数:? 所代表的值         */        int deleteCount = sqLiteDatabase.delete("person",where,value);        //3.关闭连接        sqLiteDatabase.close();        //4.提示        Toast.makeText(this,"deleteCount = "+deleteCount,Toast.LENGTH_SHORT).show();    }    /**     * 更新数据     *     * @param view     */    public void testUpdateDate(View view) {        DBHelper dbHelper = new DBHelper(this,2);        //1.得到连接        SQLiteDatabase sqLiteDatabase = dbHelper.getReadableDatabase();        //2.执行update  update person set name = "Jack",age = 20 where _id = 6        /**         * 第一个参数:表名         * 第二个参数:更新的value         * 第三个参数:where 后的语句         * 第四个参数:? 所代表的值         */        ContentValues values = new ContentValues();        values.put("name","Jack");        values.put("age",20);        int updateCount = sqLiteDatabase.update("person",values,"_id = 6",null);        //3.关闭连接        sqLiteDatabase.close();        //4.提示        Toast.makeText(this,"updateCount = "+updateCount,Toast.LENGTH_SHORT).show();    }    /**     * 查询数据     *     * @param view     */    public void testQueryDate(View view) {        DBHelper dbHelper = new DBHelper(this,2);        //1.得到连接        SQLiteDatabase sqLiteDatabase = dbHelper.getReadableDatabase();        //2.执行query select * from person        Cursor cursor =  sqLiteDatabase.query("person",null,null,null,null,null,null);        //得到cursor查询到的总记录数        int count = cursor.getCount();        while(cursor.moveToNext()){            // id            int id = cursor.getInt(0);            // name            String name = cursor.getString(1);            // age            int age = cursor.getInt(cursor.getColumnIndex("age"));        }        //3.关闭连接        cursor.close();        sqLiteDatabase.close();        //4.提示        Toast.makeText(this,"count = "+count,Toast.LENGTH_SHORT).show();    }    /**     * 事务处理     *     * 一个功能中对数据库进行多个操作,要就都成功要就都失败     * 事务处理三步骤:     * 1.   开启事务(获取连接后)     * 2.   设置事务成功(在全部正常执行完后)     * 3.   结束事务(finally中进行)     *     * @param view     */    public void testHandleAffair(View view) {        SQLiteDatabase sqLiteDatabase = null;        try {            DBHelper dbHelper = new DBHelper(this,2);            //1.得到连接            sqLiteDatabase = dbHelper.getReadableDatabase();            //1. 开启事务(获取连接后)            sqLiteDatabase.beginTransaction();            //2.执行update  update person set age = 20 where _id = 6            ContentValues values = new ContentValues();            values.put("age",20);            int updateCount = sqLiteDatabase.update("person",values,"_id = 6",null);            boolean flag = true;            if(flag) {                throw new RuntimeException("出异常啦!!");            }            //执行update  update person set age = 21 where _id = 7            values.put("age",21);            int updateCount2 = sqLiteDatabase.update("person",values,"_id = 7",null);            //2.设置事务成功(在全部正常执行完后)            sqLiteDatabase.setTransactionSuccessful();        }catch (Exception e) {            Toast.makeText(this,"出异常啦!!!",Toast.LENGTH_SHORT).show();        }finally {            if (sqLiteDatabase!=null) {                //3.结束事务(finally中进行)                sqLiteDatabase.endTransaction();                //3.关闭连接                sqLiteDatabase.close();            }        }    }}

注意:new一个数据库对象后,一定要获取连接再进行操作。

 

链接:https://pan.baidu.com/s/1TwNX_V0pI-yPSBFqJpm9DA 


提取码:hnz2

更多相关文章

  1. Android的Activity的小知识点
  2. 使用Android(安卓)studio阅读Android源码
  3. android定时任务的几种实现方式
  4. Android(安卓)获取当前连接的wifi名称和rssi
  5. Android(安卓)Adapter中的getView缓存失效
  6. WebRTC学习笔记_Demo收集
  7. android在代码中修改view的布局
  8. 【Android(安卓)开发教程】在服务中执行重复任务
  9. AsyncTask的使用及其源码分析

随机推荐

  1. 旅行场景下的个性化营销平台揭秘
  2. 包教包会,7段代码带你玩转Python条件语句
  3. 数据分析必备:掌握这个R语言基础包1%的功
  4. 身高2m,体重2kg,这样的数据“看上去很好”?
  5. 解读人工智能、大数据和云计算的关系,大佬
  6. 运算符,分支,循环结构
  7. 进程间通信
  8. Excel自学详细视频教程百度网盘分享
  9. 处理Globeimposter-Alpha865qqz,*865qqz
  10. k8s实战之理解helm