Android-SQLiteDatabase数据存储

目标效果:

Android-SQLiteDatabase数据存储_第1张图片

使用代码新建数据库进行插入修改删除查询操作,并使用log打印日志信息。(前边运行过多次,所以id不是从1开始了)


1.MainActivity.java页面创建数据库并进行插入修改删除查询打印。

MainActivity.java页面:

package com.example.database;

import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import android.view.Menu;

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);
		
		/*创建表,integer为整形,text为字符串,primary key代表主键,autoincrement代表自增,not 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("insert into usertb(name,sex,age)values('张三','男',18)");
		
		/*添加方式二*/
		ContentValues values=new ContentValues();
		values.put("name","李四");
		values.put("sex","男");
		values.put("age",20);
		db.insert("usertb",null,values);
		values.clear();//清空values值,便于后边继续使用该变量
		
		/*修改*/
		values.put("sex","女");
		db.update("usertb",values,"_id>?",new String[]{"3"});//将id大于3的人性别全改为女
		
		/*删除*/
		db.delete("usertb","name like ?",new String[]{"%三%"});//删除名字含有三的人
		
		/*查询所有信息*/
		Cursor c=db.rawQuery("select * from usertb",null);
		if(c!=null){
			while(c.moveToNext()){
				Log.i("MainActivity","_id"+c.getInt(c.getColumnIndex("_id")));
				Log.i("MainActivity","name"+c.getString(c.getColumnIndex("name")));
				Log.i("MainActivity","sex"+c.getString(c.getColumnIndex("sex")));
				Log.i("MainActivity","age"+c.getInt(c.getColumnIndex("age")));
			}
			c.close();//释放游标
		}
		
		Log.i("MainActivity","---分隔符---");
		
		/*按条件查询*/
		Cursor b=db.query("usertb",null,"_id>?",new String[]{"2"},null,null,"name");//查询id大于2的新的信息
		if(b!=null){
			while(b.moveToNext()){
				Log.i("MainActivity","_id"+b.getInt(b.getColumnIndex("_id")));
				Log.i("MainActivity","name"+b.getString(b.getColumnIndex("name")));
				Log.i("MainActivity","sex"+b.getString(b.getColumnIndex("sex")));
				Log.i("MainActivity","age"+b.getInt(b.getColumnIndex("age")));
			}
			b.close();//释放游标
		}
		db.close();//释放SQLiteDatabase对象
	}
}


2.新建的数据库文件同上一篇博文的文件位置一样,只不过这个是保存在了databases文件夹下。(真机运行打不开data文件夹,需要使用模拟器运行)

Android-SQLiteDatabase数据存储_第2张图片


另外,SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本的更新,一般是建立一个类继承它,并实现它的onCreate和onUpgrade方法。

1.创建DBOpenHelper类,继承SQLiteOpenHelper,用于创建数据库和插入数据。

DBOpenHelper.java页面:

package com.example.database;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBOpenHelper extends SQLiteOpenHelper{

	/**
	 * SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本的更新,一般是建立一个类继承它,并实现它的onCreate和onUpgrade方法
	 */
	public DBOpenHelper(Context context, String name) {
		super(context, name,null,1);
	}

	/*首次创建数据库的时候调用(调用一次),一般可以把建库,建表的操作写到里边,不可以人为调用*/
	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL("create table if not exists stutb(_id integer primary key autoincrement,name text not null,age integer not null,sex text not null)");
		
		/*添加方式一*/
		db.execSQL("insert into stutb(name,sex,age)values('张三','女',18)");
		
		/*添加方式二*/
		ContentValues values=new ContentValues();
		values.put("name","王五");
		values.put("sex","男");
		values.put("age",20);
		db.insert("stutb",null,values);
	}

	/*当数据库的版本发生变化的时候,会自动执行,不可以人为调用*/
	@Override
	public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
		
	}

}

2.新建SecondActivity.java页面和activity_second.xml页面,这里只需要使用SecondActivity.java页面进行处理数据和打印信息。

SecondActivity.java页面:

package com.example.database;

import android.os.Bundle;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

public class SecondActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_second);
		
		/*实例DBOpenHelper对象*/
		DBOpenHelper helper=new DBOpenHelper(SecondActivity.this,"stu.db");
		
		/*获取数据库*/
		SQLiteDatabase db=helper.getWritableDatabase();
		
		/*查询所有信息*/
		Cursor c=db.rawQuery("select * from stutb",null);
		if(c!=null){
			while(c.moveToNext()){
				Log.i("MainActivity","name"+c.getString(c.getColumnIndex("name")));
			}
		}
	}
}


3.使用SQLiteOpenHelper的好处是方便数据库的处理。









你可能感兴趣的:(数据库,数据存储,sqlitedatabase)