zoukankan      html  css  js  c++  java
  • Android SQLite

    Android系统是内置了数据库的——SQLite。

    创建数据库

    • SQLiteOpenHelper帮助类。借助这个类可以非常简单的对数据库进行创建和升级。这是一个抽象类,需要重写onCreate()和onUpgrade()方法。还有两个重要方法:getReadableDatabase()和getWritableDatabase()。这两个方法都可以打开或者创建一个数据库,并返回一个可对数据库进行读写操作的对象。
    • 构造方法:一般使用4个参数,Context(上下文)、数据库名、Cursor(一般传入null)、表示当前数据库版本号
    • 数据库文件会放在/data/data//database/目录下。此时,重写的onCreae()方法也会得到执行,所以通常会在处理一些创建表的逻辑。
    public class MyDatabaseHelper extends SQLiteOpenHelper {
        private static final String CREATE_BOOK="create table Book ("
                +"id integer primary key autoincrement,"
                +"author text,"
                +"price real,"
                +"pages integer,"
                +"name text)";
        private static final String CREATE_CATEGORY="create table Category ("
                +"id integer primary key autoincrement,"
                +"category_name text,"
                +"category_code integer)";
        private Context mContext;
    
        public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
            super(context, name, factory, version);
            this.mContext = context;
        }
        //表不存在,第一次创建时会调用的方法
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(CREATE_BOOK);
            db.execSQL(CREATE_CATEGORY);
            Toast.makeText(mContext,"Create succeeded",Toast.LENGTH_SHORT).show();
        }
        //当传进来的版本号大于当前数据库的版本号时,就会运行这个函数
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("drop table if exists Book");
            db.execSQL("drop table if exists Category");
            onCreate(db);
        }
    }
    
    public class MainActivity extends AppCompatActivity {
        private MyDatabaseHelper dbHelper;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //dbHelper=new MyDatabaseHelper(this,"BookStore.db",null,1);
            dbHelper=new MyDatabaseHelper(this,"BookStore.db",null,2);//更新
            Button create=(Button)findViewById(R.id.create_database);
            create.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dbHelper.getWritableDatabase();//当有这个数据库的时候直接返回,没有的话调用onCreate()方法创建
                }
            });
    }
    

    增删改查

    增加更新一般需要ContentValues组装数据。查询方法参数较多,用时再查。

    insert.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    SQLiteDatabase db=dbHelper.getWritableDatabase();
                    ContentValues values=new ContentValues();
                    //开始组装第一条数据
                    values.put("name","Android Studying");
                    values.put("author","G");
                    values.put("pages",450);
                    values.put("price",16.54);
                    db.insert("Book",null,values);//插入第一条数据
                    values.clear();
                    //开始组装第二条
                    values.put("name","Android Studying2");
                    values.put("author","G2");
                    values.put("pages",900);
                    values.put("price",20);
                    db.insert("Book",null,values);//插入第二条数据
                }
            });
            //update()方法,第一个参数是表名,第二个是ContentValues,第三个是条件(相当于SQL中的where),第四个是条件参数
            update.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                SQLiteDatabase db=dbHelper.getWritableDatabase();
                    ContentValues values=new ContentValues();
                    values.put("price",10.99);
                    db.update("Book",values,"name=?",new String[]{"Android Studying"});
                }
            });
            //delete()方法,三个参数,第一个参数表名、第二三是删除的那几列,不指定的话默认删除所有行
            delete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    SQLiteDatabase db=dbHelper.getWritableDatabase();
                    db.delete("Book","price<?",new String[]{"11"});
                }
            });
            query.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    SQLiteDatabase db= dbHelper.getWritableDatabase();
                    //查询Book表中所有的数据
                    Cursor cursor=db.query("Book",null,null,null,null,null,null);
                    if(cursor.moveToFirst()){
                        do{
                            //遍历Cursor对象,取出数据并打印
                            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"));
                            Log.d("MainActivity","book name is "+name);
                            Log.d("MainActivity","book author is "+author);
                            Log.d("MainActivity","book pages is "+pages);
                            Log.d("MainActivity","book price is "+price);
                        }while(cursor.moveToNext());
                    }
                    cursor.close();
                }
            });
        }
    

    SQL语言

    添加数据

    db.execSQL("insert into Book (name,author,pages,price) values (?,?,?,?)",new String[]{"Android Studying","G","450","16.54"});
    db.execSQL("insert into Book (name,author,pages,price) values (?,?,?,?)",new String[]{"Android Studying2","G2","900","20"});
    

    更新数据

    db.execSQL("update Book set price=? where name=?",new String[]{"10.99","Android Studying"});

    删除数据

    db.execSQL("delete from Book where price<?",new String[]{"11"});

    查询数据

    db.rawQuery("select * from Book",null);

  • 相关阅读:
    Js实现页面跳转的几种方式
    android给View设置上下左右边框
    mac下安装tomcat
    Series.str方法
    loc() iloc() at() iat()函数
    sudo: pip:找不到命令
    杀死进程方法
    unique()与nunique()
    object数据类型
    set_index()与reset_index()函数
  • 原文地址:https://www.cnblogs.com/code-fun/p/12920273.html
Copyright © 2011-2022 走看看