zoukankan      html  css  js  c++  java
  • 第15天android:使用sqlite

    http://www.verycd.com/topics/2915669/

    17_传智播客Android视频教程_创建数据库与完成数据添删改查

     1.创建数据库

    package com.wan;
    
    import android.content.Context;
    import android.database.DatabaseErrorHandler;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    
    public class DBOpenHelper extends SQLiteOpenHelper {
    
        public DBOpenHelper(Context context) {
            //context,文件名,游标(使用默认的游标工厂),数据库的版本号
            super(context,"wan.db",null,1);//保存在 /data/data/<包民>/database/ 文件下
        }
    
        //数据库在第一次创建的时候调用的。创建完数据库文件后执行。这里一般是生成数据库表结构。
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("create table person(id integer primary key autoincorement,name varchar(20))");
        }
    
        //数据库文件版本号发生变化的时候执行的。一般是添加字段,取出字段。
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("Alter Table person Add phone varchar(12) null");
        }
    
    }

    这样就可以创建数据库和表了。

    使用 sqlite expert professional 查看sqlite里面的数据和结构

    数据库文件会在 /data/data/<包民>/database/

    2.执行创建

    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            DBOpenHelper db =new DBOpenHelper(getApplicationContext());
            db.getWritableDatabase();
            
        }

    在调用

            SQLiteDatabase r=db.getWritableDatabase();
            SQLiteDatabase r1=db.getWritableDatabase();

    执行两次得到的数据库是一个实例。

    上面的方法,在数据库文件文件太大,就可能会报错。

    3.更新、查询和分页

            //修改
            r1.execSQL("update person set name =? , phone =?", new String[] {
                    "name", "891" });
            //查询
            Cursor cursor = r1.rawQuery("select * from person where id = ? ",
                    new String[] { "128" });
            if (cursor.moveToFirst()) {
                int id = cursor.getInt(cursor.getColumnIndex("id"));
                String name =cursor.getString(cursor.getColumnIndex("name"));
            }
            //分页
            Cursor cursorPage = r1.rawQuery("select * from person limit 100,50",null);

    18_传智播客Android视频教程_在SQLite中使用事务

    1.事务使用

            //开始事务
            r1.beginTransaction();
            r1.execSQL("update person set xxx=100 where id =1");
            r1.execSQL("update person set yyy=100 where id =1");
            //结束事务
            r1.endTransaction();
            //事务的提交或回滚是 由事务标志决定的,默认情况下为false。为True的时候提交,否则回滚

    第18集完。

  • 相关阅读:
    Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用
    分布式架构2:Nginx下Session存储
    分布式架构3:MySQL集群(Mysql Cluster7.5.5)
    分布式架构1:Nginx实现负载均衡
    Oracle 触发器记录
    [Deprecation Notice] 本博客弃用, 迁移至新博客
    KM算法 O(n^3)最大权完美匹配
    Python 学习笔记(附 Pytorch)
    你一定看的懂的:vlan与交换机端口的三种模式access,trunk和hybrid
    Git代码回滚
  • 原文地址:https://www.cnblogs.com/wanself/p/2616185.html
Copyright © 2011-2022 走看看