zoukankan      html  css  js  c++  java
  • 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();
    	}
    	
    	
    }
    

      

  • 相关阅读:
    2.变量、数据类型、数据类型转换相关函数
    3.字符串、列表、元组、字典、集合的补充
    CentOS7安装mysql后无法启动服务,提示Unit not found
    (个人记录)Python2 与Python3的版本区别
    1.print()与input()
    JAVA:函数的定义、使用
    Java:包装类
    Java:访问权限
    Java程序流程控制:判断结构、选择结构、循环结构
    Java:运算符的问题
  • 原文地址:https://www.cnblogs.com/Sunnor/p/4693852.html
Copyright © 2011-2022 走看看