Android SQLite增删查改基本操作

来源:互联网 发布:网络连接设备的作用 编辑:程序博客网 时间:2024/05/16 08:55
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);}@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stubString sql = "create table stu_db(id int, sname varchar(20), sage int, ssex varchar(10))";db.execSQL(sql);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stubSystem.out.println("onUpgrade");}}

五、调用方法:


public class MainActivity extends Activity {@Overrideprotected 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();}}



  


原创粉丝点击