• Android存储之SQLiteDatbase


      SQLiteDatabase的方式会生成一个数据库文件,每个应用最多只对应一个数据库文件,即.db文件。

    可以使用很多第三方工具进行打开,查看数据库里的内容。

    昨晚试了好几种工具,如navicat,sqlite3,sqlitespy,等,还是觉得sqlitespy比较好用,而且体积也小,才1.7M。文件管理里有对应的sqlitespy。省得以后到处找sqlite的打开工具。

      前面的SharedPreferences的存储方式就类似于web应用中的表单的存储。

    而SQLiteDatabase类似于把数据存储到Oracle中,只是安卓用是保存到sqlite数据库中而已。

    注意点:

    sqlite建表sql和Oracle中不同的地方:

    Oracle中:

    create table usertb (_id integer primary key autoincrement, name text not null , age integer not null , sex text not null )
    

      或者

    create or replace table usertb (_id integer primary key autoincrement, name text not null , age integer not null , sex text not null )
    

    sqlite中:

    create table if not exists usertb (_id integer primary key autoincrement, name text not null , age integer not null , sex text not null )
    

      一定要加if not exists这个判断,sqlite中已经有了需要建的表,而建表的时候不加if not exists就会报错,因为不能够重复建同样表名的表。

    MainActivity.java如下:

    package com.example.sqlitedatabasetest;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.util.Log;
    
    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		// 每个程序都有自己的数据库 默认情况下是各自互相不干扰
    		// 创建一个数据库 并且打开
    //		SQLiteDatabase db = openOrCreateDatabase("user.db", MODE_PRIVATE, null);
    //		db.execSQL("create table if not exists usertb (_id integer primary key autoincrement, name text not null , age integer not null , sex text not null )");
    ////		db.execSQL("create table usertb2 (_id integer primary key, name text not null , age integer not null , sex text not null )");
    //		
    //		System.out.println("===================>");
    //		db.execSQL("insert into usertb(name,sex,age) values('张三','女',18)");
    //		db.execSQL("insert into usertb(name,sex,age) values('李四','女',19)");
    //		db.execSQL("insert into usertb(name,sex,age) values('王五','男',20)");
    //		System.out.println("!!!!!!!!!88888888234!!!!!!!!");
    //		Cursor c = db.rawQuery("select * from usertb", null);
    //		if (c != null) {
    //			while (c.moveToNext()) {
    //				Log.i("info", "_id:" + c.getInt(c.getColumnIndex("_id")));
    //				Log.i("info", "name:" + c.getString(c.getColumnIndex("name")));
    //				Log.i("info", "age:" + c.getInt(c.getColumnIndex("age")));
    //				Log.i("info", "sex:" + c.getString(c.getColumnIndex("sex")));
    //				Log.i("info", "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    //			}
    //			c.close();
    //		}
    //		db.close();
    		
    		//创建database
    		SQLiteDatabase db = openOrCreateDatabase("wyl.db", MODE_PRIVATE, null);
    		db.execSQL("create talbe if not exists wyl_table "
    				+ " (_id integer primary key autoincrement,"
    				+ "name text not null,sex text not null");
    		//
    		/**
    		 * create table if not exists usertb (_id integer primary key 
    		 * autoincrement, name text not null , age integer not null , sex text not null )
    		 */
    		db.execSQL("insert into wyl_table (name,sex) values ('wyl','男')");
    		db.close();
    	}
    	
    	
    }
    

      

  • 相关阅读:
    《算法》第二章部分程序 part 3
    《算法》第二章部分程序 part 2
    《算法》第二章部分程序 part 1
    《算法》第一章部分程序 part 2
    《算法》第一章部分程序 part 1
    Java,Hello World,《算法》环境搭建中的问题,用 cmd 和 IntelliJ Idea 分别编译和运行 Java 程序
    《汇编语言 基于x86处理器》第十一章 MS-DOS 编程部分的代码 part 1
    《汇编语言 基于x86处理器》第十三章高级语言接口部分的代码 part 2
    《汇编语言 基于x86处理器》第十三章高级语言接口部分的代码 part 1
    《汇编语言》(王爽)补充笔记,第 14 ~ 17 章
  • 原文地址:https://www.cnblogs.com/Sunnor/p/4693852.html
Copyright © 2020-2023  润新知