• 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类型的数据

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

  • 相关阅读:
    Linux企业级项目实践之网络爬虫(6)——将程序设计成为守护进程
    Linux企业级项目实践之网络爬虫(5)——处理配置文件
    Linux企业级项目实践之网络爬虫(3)——设计自己的网络爬虫
    Linux企业级项目实践之网络爬虫(4)——主程序流程
    Linux企业级项目实践之网络爬虫(1)——项目概述及准备工作
    Linux企业级项目实践之网络爬虫(2)——网络爬虫的结构与工作流程
    泛化、依赖、关联、聚合、组合
    日常(停课后的月考)
    日常(停课后的月考)
    打击罪犯
  • 原文地址:https://www.cnblogs.com/boy1025/p/4309497.html
Copyright © 2020-2023  润新知