Android SQLite增删查改基本操作

Android SQLite增删查改基本操作

一、SQLite数据类型


一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。SQLite具有以下常用的数据类型:

NULL: 这个值为空值

VARCHAR(n):长度不固定且其最大长度为 n 的字串,n不能超过 4000。

CHAR(n):长度固定为n的字串,n不能超过 254。

INTEGER: 值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,5,6,7,8.

REAL: 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.

TEXT: 值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).

BLOB: 值是BLOB数据块,以输入的数据格式进行存储。如何输入就如何存储,不改  变格式。

DATA :包含了 年份、月份、日期。

TIME: 包含了 小时、分钟、秒。


二、SQLiteDataBase介绍:

Android提供了创建和是用SQLite数据库的API。SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法。在Android的SDK目录下有sqlite3工具,我们可以利用它创建数据库、创建表和执行一些SQL语句。下面是SQLiteDatabase的常用方法。 

SQLiteDatabase的常用方法 
方法名称
方法表示含义
openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory  factory)
打开或创建数据库
insert(String table,String nullColumnHack,ContentValues  values)
插入一条记录
delete(String table,String whereClause,String[]  whereArgs)
删除一条记录
query(String table,String[] columns,String selection,String[]  selectionArgs,String groupBy,String having,String  orderBy)
查询一条记录
update(String table,ContentValues values,String whereClause,String[]  whereArgs)
修改记录
execSQL(String sql)
执行一条SQL语句
close()
关闭数据库

三、SQLiteOpenHelper介绍

该类是SQLiteDatabase一个辅助类。这个类主要生成一个数据库,并对数据库的版本进行管理。当在程序当中调用这个类的方法getWritableDatabase()或者 getReadableDatabase()方法的时候,如果当时没有数据,那么Android系统就会自动生成一个数据库。 SQLiteOpenHelper 是一个抽象类,我们通常需要继承它,并且实现里面的3个函数:

1.onCreate(SQLiteDatabase)
在数据库第一次生成的时候会调用这个方法,也就是说,只有在创建数据库的时候才会调用,当然也有一些其它的情况,一般我们在这个方法里边生成数据库表。

2.  onUpgrade(SQLiteDatabase,int,int) 
当数据库需要升级的时候,Android系统会主动的调用这个方法。一般我们在这个方法里边删除数据表,并建立新的数据表,当然是否还需要做其他的操作,完全取决于应用的需求。

3.  onOpen(SQLiteDatabase):
这是当打开数据库时的回调函数,一般在程序中不是很常使用。

四、自定义SQLiteOpenHelper:


public class MyDBHelper extends SQLiteOpenHelper{

	public MyDBHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		String sql = "create table stu_db(id int, sname varchar(20), sage int, ssex varchar(10))";
		db.execSQL(sql);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		System.out.println("onUpgrade");
	}

}

五、调用方法:


public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	public void dbOnCreate() {
		MyDBHelper dbHelper = new MyDBHelper(MainActivity.this, "stu_db", null,
				1);
		SQLiteDatabase db = dbHelper.getReadableDatabase();
	}

	public void dbOnUpGrade() {
		MyDBHelper dbHelper = new MyDBHelper(MainActivity.this, "stu_db", null,
				2);
		SQLiteDatabase db = dbHelper.getReadableDatabase();
	}

	public void dbOnInsert() {
		MyDBHelper dbHelper = new MyDBHelper(MainActivity.this, "stu_db", null,
				1);
		SQLiteDatabase db = dbHelper.getWritableDatabase();

		ContentValues values = new ContentValues();
		values.put("id", 1);
		values.put("name", "xiaoming");
		values.put("age", 10);

		db.insert("stu_db", null, values);
		db.close();
	}

	public void dbOnDelete() {
		MyDBHelper dbHelper = new MyDBHelper(MainActivity.this, "stu_db", null,
				1);
		SQLiteDatabase db = dbHelper.getReadableDatabase();
		String whereClause = "id=?";
		String[] whereArgs = { String.valueOf(1) };

		db.delete("stu_db", whereClause, whereArgs);
		db.close();
	}

	public void dbOnQuery() {
		MyDBHelper dbHelper = new MyDBHelper(MainActivity.this, "stu_db", null,
				1);
		SQLiteDatabase db = dbHelper.getReadableDatabase();

		Cursor cursor = db.query("stu_db",
				new String[] { "id", "name", "age" }, "id=?",
				new String[] { "1" }, null, null, null);

		while (cursor.moveToNext()) {
			String name = cursor.getString(cursor.getColumnIndex("name"));
			String age = cursor.getString(cursor.getColumnIndex("age"));
			System.out.println("name = " + name + "age = " + age);
		}
		db.close();
	}

	public void dbOnUpdate() {
		MyDBHelper dbHelper = new MyDBHelper(MainActivity.this, "stu_db", null,
				1);
		SQLiteDatabase db = dbHelper.getWritableDatabase();

		ContentValues values = new ContentValues();
		values.put("age", 100);
		String whereClause = "id=?";
		String[] whereArgs = { String.valueOf(1) };

		db.update("stu_db", values, whereClause, whereArgs);
		db.close();

	}
}



  


你可能感兴趣的:(android)