Android数据的四种存储方式之SQLite数据库

Test.java:

/**
 * 本例解决的问题:
 * 核心问题:通过SQLiteOpenHelper类创建数据库对象
 * 通过数据库对象对数据库的数据的操作
 * 1.sql语句方式操作SQLite数据库
 * 2.谷歌提供的api对SQLite数据库的操作
 * 3.SQLite对事务的操作
 */
import com.ghsy.createsqlitedb.db.MyOpenHelper;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;

public class Test extends AndroidTestCase {

	MyOpenHelper oh;
	SQLiteDatabase db;

	public void test() {
		// 创建一个MyOpenHelper对象
		// 修改此处的版本号,会执行upgrade方法--upgrade方法中添加了一列
		MyOpenHelper oh = new MyOpenHelper(getContext(), "people.db", null, 3);
		// 如果数据库不存在,先创建数据库,再打开数据库,如果已经存在,直接打开
		SQLiteDatabase db = oh.getWritableDatabase();
		db.close();
	}

	// 测试框架初始化完成
	/**
	 * This method is called before a test is executed
	 */
	@Override
	protected void setUp() throws Exception {
		// TODO Auto-generated method stub
		super.setUp();
		oh = new MyOpenHelper(getContext(), "people.db", null, 3);
		db = oh.getWritableDatabase();
	}

	// ===========sql语句方式操作SQLite数据库================================
	public void insert() {

		db.execSQL("insert into person(name, phone, money) values(?, ?, ?)",
				new Object[] { "大明", "18666", 6000 });
		db.execSQL("insert into person(name, phone, money) values(?, ?, ?)",
				new Object[] { "小红", "18666", 6000 });
		db.execSQL("insert into person(name, phone, money) values(?, ?, ?)",
				new Object[] { "大红", "18666", 6000 });
	}

	public void delete() {
		db.execSQL("delete from person where name = ?", new Object[] { "大明" });
	}

	public void update() {
		db.execSQL("update person set money = 10000 where name = ?",
				new Object[] { "小明" });
	}

	public void query() {
		// 游标,存放查询返回的数据,获取方法跟resultSet高度雷同
		Cursor c = db.rawQuery("select * from person", new String[] {});
		while (c.moveToNext()) {
			String name = c.getString(c.getColumnIndex("name"));
			String phone = c.getString(c.getColumnIndex("phone"));
			System.out.println(name + ";" + phone);
		}
	}

	// ==============谷歌提供的api对SQLite数据库的操作======================
	/**
	 * api-insert data to table
	 */
	public void insertApi() {

		ContentValues cv = new ContentValues();
		cv.put("name", "微明");
		cv.put("phone", 15666);
		cv.put("money", 630);
		long id = db.insert("person", null, cv);
		System.out.println(id);
	}

	/**
	 * api-delete data from table
	 *
	 * @return the number of rows affected
	 */
	public int deleteApi() {
		int affectedNum = db.delete("person", "name=?", new String[] { "小红" });
		return affectedNum;
	}

	/**
	 * api-update
	 */
	public void updateApi() {
		ContentValues contentValues = new ContentValues();
		contentValues.put("name", "小红");
		contentValues.put("money", "10");
		// return the number of rows affected
		db.update("person", contentValues, "name=?", new String[] { "大红" });
	}

	public void queryApi() {
		Cursor cursor = db.query("person", new String[] { "phone", "money" },
				null, null, null, null, null);
		while (cursor.moveToNext()) {
			String phone = cursor.getString(cursor.getColumnIndex("phone"));
			String money = cursor.getString(cursor.getColumnIndex("money"));
			System.out.println(phone + "##" + money);
		}
	}

	// ===============SQLite对事务的操作=====================
	/**
	 * 银行转账操作
	 */
	public void transation(){
		  db.beginTransaction();
		   try {
			   //name为微明的用户向小红转账
			   ContentValues contentValues=new ContentValues();
			   contentValues.put("money", 1000);
			   db.update("person", contentValues, "name=?", new String[]{"微明"});
			   ContentValues contentValues2=new ContentValues();
			   contentValues2.put("money", 1100);
			   db.update("person", contentValues2, "name=?", new String[]{"小红"});
			   //所有语句执行完毕,若没有异常,则会执行这句设置事务成功的标记
			   db.setTransactionSuccessful();
		   } finally {
			   //会检查事务的标识,若没有调用setTransactionSuccessful()方法设置标志,则回滚事务。否则提交事务。
		       db.endTransaction();
		   }
	}
}

MyOpenHelper.java

**SQLiteOpenHelper:
 * A helper class to manage database creation and version management.
 * 所以,SQLiteOpenHelper是对库本身的操作。若要对库中数据操作,需要使用库对象的方法。
 */
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class MyOpenHelper extends SQLiteOpenHelper {

	//name:数据库文件的名字
	//factory:游标工厂
	//version:版本,必须大于等于1
	public MyOpenHelper(Context context, String name, CursorFactory factory, int version) {
		super(context, name, factory, version);
		// TODO Auto-generated constructor stub
	}

	//数据库创建时调用
	@Override
	public void onCreate(SQLiteDatabase db) {
		//创建一个person表
		db.execSQL("create table person(_id integer primary key autoincrement, name char(10), phone char(20))");
		System.out.println("oncreate调用了");
	}

	//数据库升级时调用
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		System.out.println("onupgrade调用了");
		db.execSQL("alter table person add money char(20)");
	}
}

Android数据的四种存储方式之SQLite数据库

时间: 2024-10-23 06:06:37

Android数据的四种存储方式之SQLite数据库的相关文章

Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (一) —— 总览

Android数据的四种存储方式SharedPreferences.SQLite.Content Provider和File (一) —— 总览 作为一个完成的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQLite.Content Provider和File.由于Android系统中,数据基本都是私有的的,都是存放于“data/data/程序包名”目录下,所以要实现数据共享,正确方式是使用Content Pro

Android数据的四种存储方式之SharedPreferences

除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data/data/< >/shared_prefs目录下.SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现.实现SharedPreferences存储的步骤如下: 一.根据Context获取SharedPreferences对象 二.利用edi

Android数据的四种存储方式

很清晰的思路,转自Android数据的四种存储方式 作为一个完成的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQLite.Content Provider和File.由于Android系统中,数据基本都是私有的的,都是存放于“data/data/程序包名”目录下,所以要实现数据共享,正确方式是使用Content Provider. SQLite: SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用

Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences

Android数据的四种存储方式SharedPreferences.SQLite.Content Provider和File (三) —— SharePreferences 除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data/data/<包名>/shared_prefs目录下.SharedPreferences对象本身只能获取数据而不支持存储和修

Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File 之 —— SQLite

本文在http://www.cnblogs.com/wisekingokok/archive/2011/09/14/2174844.html 基础上写了一个进阶的创建方式,技术能用新的就用新的. 参考了http://blog.csdn.net/liuhe688/article/details/6715983.仅供学习参考 SQLite是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型,分别是: NULL: 空值 INTEGER: 整数 REAL: 浮点数 TEXT: 字符串 BLOB: 大

[转][Android]Android数据的四种存储方式

android.database.sqlite类 SQLiteQueryBuilder java.lang.Object android.database.sqlite.SQLiteQueryBuilder public class SQLiteQueryBuilderextends Object This is a convience class that helps build SQL queries to be sent to SQLiteDatabase objects. 构造方法摘要

Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File

作为一个完成的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.分别 是:SharePreference.SQLite.Content Provider和File.由于Android系统中,数据基本都是私有的的,都是存放于“data/data/程序包名”目录下,所以要实现数据共 享,正确方式是使用Content Provider. SQLite: SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数据存储方式.Android为此数据库提供

android数据的4种存储方式

Android数据的四种存储方式 作为一个完成的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQLite.Content Provider和File.由于Android系统中,数据基本都是私有的的,都是存放于"data/data/程序包名"目录下,所以要实现数据共享,正确方式是使用Content Provider. SQLite: SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数

android数据的五种存储方式

Android提供了5种方式存储数据 (1)使用SharedPreferences存储数据,它是Android提供的用来存储一些简单配置信息的一种机制,采用了XML格式将数据存储到设备中.只能在同一个包内使用,不能在不同的包之间使用. SharedPreferences存储方式,它是Android提供的用来存储一些简单配置信息的一种机制,例如:登录用户的用户名与密码.其采用了Map数据结构来存储数据,以键值的方式存储,可以简单的读取与写入.存储目录/data/data/Package Name/