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

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

原文地址:https://www.cnblogs.com/boy1025/p/4309497.html