zoukankan      html  css  js  c++  java
  • 数据库基础开源学习教程-android 使用 litepal 操作本地数据库

    <p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnMysql" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

     说明

    android手机自带本地数据库 SQLite ,操作本地数据库android给了api

    不过这节的重点是讲解如何使用 郭霖(第一行代码) 写的litepal 操作数据库

    在使用litepal之前,咱们先看下使用android 自带的api操作数据库

    打开本节代码

    1.用户可以去百度了...这是Android  api操作数据库最基本的规定

     

    public class DataBase extends SQLiteOpenHelper {
        private final static String TABLE_NAME = "MyTable";//表格名字
        private final static String ID = "id"; //第一个字段
        private SQLiteDatabase db = null;
        public final static String UserName = "name";//第二个字段
        public DataBase(Context context, String DATABASE_NAME, int DATABASE_VERSION) {
            super(context,DATABASE_NAME, null, DATABASE_VERSION);
        }
        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
            String sql = "CREATE TABLE " + TABLE_NAME +
                    " (" +
                    ID + " INTEGER primary key autoincrement, " +
                    UserName + " text "+
                    ")";
            db.execSQL(sql);
        }
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub
            String sql = "DROP TABLE IF EXISTS " + TABLE_NAME;
            db.execSQL(sql);
            onCreate(db);
        }
    
        /**
         * insert data
         * @param name
         * @return
         */
        public long insert(String name)
        {
            db = getWritableDatabase();
            /* ContentValues */
            ContentValues cv = new ContentValues();
            cv.put(UserName, name);
    
            long row = db.insert(TABLE_NAME, null, cv);
            db.close();
            return row;
        }
    
        /**
         * delete data
         * @param name
         * @return
         */
        public long delete(String name)
        {
            db = getWritableDatabase();
            String where = UserName + " = ?";
            String[] whereValue ={name};
            long row = db.delete(TABLE_NAME, where, whereValue);
            db.close();
            return row;
        }
    
        /**
         * query data
         * @param name
         * @return
         */
        public Cursor query(String name)
        {
            db = getWritableDatabase();
            Cursor cursor = null;
            String str = null;
    
            str = "select "+name +" from "+ TABLE_NAME;
            cursor = db.rawQuery(str,null);
    
            return cursor;
        }
    }

     2.上面的程序是生成这样一张表格

    3.插入数据

    4.删除数据

     5.查询数据

    使用

     

     

    接着看litepal

    1.把jar包引入自己工程

    我使用的是2.0版本

    2.建一个java文件,继承 LitePalSupport

    public class DataBaseLitepal extends LitePalSupport {
        private  int id;//ID
        private  String UserName;//用户名
        private  String UserPwd;//密码public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getUserName() {
            return UserName;
        }
        public void setUserName(String userName) {
            UserName = userName;
        }
        public String getUserPwd() {
            return UserPwd;
        }
        public void setUserPwd(String userPwd) {
            UserPwd = userPwd;
        }
    }

    上面的意思是建一张这样的表格

    3.在assets文件夹里面建一个litepal.xml文件

    如果没有 assets 文件夹,建一个文件夹,assets 是放android资源的文件夹

    <mapping class="com.example.myapplication.myapplicationlitepal.DataBaseLitepal"></mapping>

    里面的calss需要写全路径.

    <?xml version="1.0" encoding="utf-8"?>
    <litepal>
        <!-- 数据库名 -->
        <dbname value="Testlitepal" ></dbname>
        <!-- 数据库版本 -->
        <version value="1" ></version>
    
        <!--数据库文件路径,把所有的数据库文件放到此处 -->
        <list>
            <mapping class="com.example.myapplication.myapplicationlitepal.DataBaseLitepal"></mapping>
        </list>
    </litepal>

    4.初始化

    1.建一个  MyApplication  继承 Application 

    在 onCreate 里面写上下面两句

    注: Application onCreate 是程序一启动就执行的函数,目的是让litepal第一时间初始化

    如果自己有了 Application,只需要添加下面两句即可

    /*=================litepal数据库=====================*/
            LitePal.initialize(this);
            //获取到SQLiteDatabase的实例,创建数据库表
            SQLiteDatabase db = LitePal.getDatabase();

    2.在 AndroidManifest.xml 文件中配置下 

    5.添加和查询数据

    /*添加数据*/
            DataBaseLitepal dataBaseLitepal = new DataBaseLitepal();
            dataBaseLitepal.setUserName("yang");
            dataBaseLitepal.setUserPwd("11223344");
            dataBaseLitepal.save();
            /*查询数据*/
            List<DataBaseLitepal> allSongs = LitePal.where("UserName=?","yang").find(DataBaseLitepal.class);
            for (DataBaseLitepal dataBaseLitepal1 :allSongs) {
                int id = dataBaseLitepal1.getId();
                String UserName = dataBaseLitepal1.getUserName();
                String UserPwd = dataBaseLitepal1.getUserPwd();
                Log.d("MainActivity",id+" "+ UserName+ " " + UserPwd);
            }

    6.修改和删除数据

    /*修改数据:把用户yang的密码改为1234567890*/
            ContentValues values = new ContentValues();
            values.put("UserPwd","1234567890");
            int updateAllNum = LitePal.updateAll(DataBaseLitepal.class,values,"UserName =  ? ","yang");
            /*查询数据*/
            List<DataBaseLitepal> dataBaseLitepals = LitePal.where("UserName=?","yang").find(DataBaseLitepal.class);
            for (DataBaseLitepal dataBaseLitepal1 :dataBaseLitepals) {
                int id = dataBaseLitepal1.getId();
                String UserName = dataBaseLitepal1.getUserName();
                String UserPwd = dataBaseLitepal1.getUserPwd();
                Log.d("MainActivity修改后查询",id+" "+ UserName+ " " + UserPwd);
            }
            /*删除用户名为yang,密码为1234567890的数据 */
            int delAllNum = LitePal.deleteAll(DataBaseLitepal.class,"UserName = ? and UserPwd = ? ","yang","1234567890");

    7.更新数据库

    1.假设后期项目需求增加了手机号

    2.在litepal设置一个新版本即可

    补充

    1.查询所有数据

    List<DataBaseLitepal> findData = LitePal.findAll(DataBaseLitepal.class);

  • 相关阅读:
    eclipse 不自动提示和Alt + / 没提示和eclipse增强代码提示
    uboot 添加命令
    ps and kill command
    C 类型volatile 的作用
    git tutorial
    python 与命令
    C++ new and delete
    Glade3 tutorial in chinese
    查找IP与MAC
    ns3 无线资料
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/13369868.html
Copyright © 2011-2022 走看看