zoukankan      html  css  js  c++  java
  • Android成长日记-数据存储之SQLite[2]

    Part one:

    首先看这样一段代码

     1 SQLiteDatabase db=openOrCreateDatabase("SQLDemo.db", MODE_PRIVATE,null);
     2         //创建表
     3         String create_sql="create table if not exists SQLTb(_id integer primary key autoincrement,name text not null,sex text not null,age integer not null)";
     4         db.execSQL(create_sql);
     5         db.execSQL("insert into SQLTb(name,sex,age) values('张三','男','19')");
     6         db.execSQL("insert into SQLTb(name,sex,age) values('李四','男','20')");
     7         
     8          Cursor c=db.rawQuery("select * from SQLTb",null);
     9          if(c!=null)
    10          {
    11             while(c.moveToNext())
    12             {
    13                 Log.i("info", "_id"+c.getInt(c.getColumnIndex("_id")));
    14                 Log.i("info", "name"+c.getString(c.getColumnIndex("name")));
    15                 Log.i("info", "sex"+c.getString(c.getColumnIndex("sex")));
    16                 Log.i("info", "age"+c.getInt(c.getColumnIndex("age")));
    17                 Log.i("info","-------------------------------------------------");
    18             }
    19             c.close();
    20          }
    21          db.close();
    22     }

    PS:

    ①:openOrCreateDatabase(name, mode, factory):创建数据库数据库,返回值为SQLiteDatabase

       name:数据库的名字      mode:数据库的类型     factory:为了可以自定义Cursor创建

    ②:execSQL()  此方法为执行数据库的语句

    ③:rawQuery() 此方法用来查询数据库的信息,返回值为一个Cursor对象

    ④:在用moveToNext()进行遍历结束后需要进行关闭,数据库使用结束后也需要进行关闭,以起到节约内存的作用

    缺点:这种方法需要了解数据库的一些知识。

    ---------------------------------------华丽分割线---------------------------------------------------

    Part Two:

     1 SQLiteDatabase db=openOrCreateDatabase("stu.db",MODE_PRIVATE, null);
     2         String create="create table if not exists stuTb(_id integer primary key autoincrement,name text not null,age integer not null,sex text not null)";
     3         db.execSQL(create);//创建表
     4         /*
     5          * 在数据库的表中插入数据
     6          */
     7         ContentValues values=new ContentValues();
     8         values.put("name", "张三"); //键值对的形式  键:数据库列名   值:对应列的内容
     9         values.put("age", 18);
    10         values.put("sex","男");
    11         db.insert("stuTb", null, values);  //返回值为long型的数据,为行的id
    12         values.clear(); //清除键值对的数据
    13         values.put("name", "李四");
    14         values.put("age",19);
    15         values.put("sex","女");
    16         db.insert("stuTb", null, values);
    17         values.clear();
    18         values.put("name", "王五");
    19         values.put("age", 21);
    20         values.put("sex", "男");
    21         db.insert("stuTb", null, values);
    22         values.clear();
    23         /*
    24          * 在数据库中更新数据
    25          */
    26         values.put("sex","女");
    27         //db.update(table, values, whereClause, whereArgs)
    28         db.update("stuTb", values, "_id>?", new String[]{"2"});//将全部id>2的sex改成女
    29         /*
    30          * 在数据库中删除数据
    31          */
    32         //db.delete(table, whereClause, whereArgs)
    33         db.delete("stuTb", "name like ?", new String[]{"%三%"}); //将名字中带有三的数据删除
    34         /*
    35          * 在数据库中查询数据
    36          */
    37         //db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy)
    38         Cursor c=db.query("stuTb", null, "_id>?", new String[]{"0"}, null, null, "name");//将id>0的数据按照名字排列
    39         if(c!=null)
    40         {
    41             String[] columns=c.getColumnNames();
    42             while(c.moveToNext())
    43             {
    44                 //得到一行数据
    45                 for(String columnsName:columns)
    46                 {
    47                     Log.i("info", c.getString(c.getColumnIndex(columnsName)));
    48                 }
    49             }
    50             c.close();
    51         }
    52         db.close();
    53 }

    PS:

    ①插入:db.insert(table, nullColumnHack, values)  //参数分别对应:表名,默认值,values值

    在values值是存储的ContentValues类型的数据,所以应该创建对象:ContentValues values = new ContentValues();

                                                                                          values.put(“列名”,”内容”);

    ②更新:db.update(table, values, whereClause, whereArgs) //参数分别对应:表名,更新的内容,条件,条件值(以数组类型new String[]{“内容”})

    ③删除:db.delete(table, whereClause, whereArgs)  //参数分别对应:表名   条件,条件值

    ④查询:db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy) //参数分别对应:表名,查询的列数(null为全部),条件,条件值(以数组类型new String[]{“内容”}),分组,<默认为null>,规则排序          ------>>返回值为Cursor类型的数据

    ⑤注意:数据库的信息在使用结束要及时关闭

  • 相关阅读:
    【面积并】 Atlantis
    【动态前k大 贪心】 Gone Fishing
    【复杂枚举】 library
    【双端队列bfs 网格图建图】拯救大兵瑞恩
    【奇偶传递关系 边带权】 奇偶游戏
    【权值并查集】 supermarket
    CF w4d3 A. Pythagorean Theorem II
    CF w4d2 C. Purification
    CF w4d2 B. Road Construction
    CF w4d2 A. Cakeminator
  • 原文地址:https://www.cnblogs.com/boy1025/p/4309497.html
Copyright © 2011-2022 走看看