Android学习记录第六周

SQLite用法

SQLite基本用法说明

1、创建一个类,如:UserDatabaseOpenHelper,让它继承SQLiteOpenHelper,并实现它的两个抽象方法onCreate和onUpdate方法。
onCreate方法在数据库创建时调用,一般用于创建数据库。
onUpdate方法当在数据库版本有变化时调用,一般当app更新时,更改数据库的数据库结构用。
2、

UserDatabaseOpenHelper userDatabaseOpenHelper = new UserDatabaseOpenHelper(this);
SQLiteDatabase mSqLiteDatabase = userDatabaseOpenHelper.getWritableDatabase();

创建一个SQLiteDatabase类的对象,用OpenHelper类的.getWritableDatabase()或.getReadableDatabase()方法创建。这两个方法的区别在于在内存满时,getReadableDatabase()方法会返回只读的数据库。
3、使用userDatabaseOpenHelper的insert,delete,update,query方法用于增、删、改、查。

Cursor cursor = mSqLiteDatabase.query(TABLE_ACCOUNT_INFO, new String[]{ACCOUNT}, null, null, null, null, null);
mSqLiteDatabase.update(TABLE_ACCOUNT_INFO, contentValues, "account =?", new String[]{mAccountString});
sqLiteDatabase.insert(TABLE_ACCOUNT_INFO,null,contentValues);
sqLiteDatabase.delete(TABLE_ACCOUNT_INFO,null,null)

用于查询数据库返回的游标Cursor,此游标的作用类似于一个标记,每当使用cursor.moToNext()时,游标后移一位,可以使用这个方法遍历查询结果。
Cursor常用的方法还有cursor.getXXX()方法(这里的XXX可以是各种基本数据类型),用于取出数据库的数据。int cursor.getColumnIndexOrThrow(String column)方法可以获得特定某个想要查询的某列。

ContentProvider介绍

ContentProvider时Android的四大组件之一,利用ContentProvider可以获取其他应用程序对外暴露的数据,例如,可以使用ContentProvider获取手机通讯录信息,也可以获取图库或媒体库中的信息。在自己的程序中,也可以向其他程序提供自己的数据信息。
基本用法:
1、创建一个类,让其继承ContentProvider类,并实现ContentProvider内的抽象方法,如insert,update,delete,query。这些方法在其他程序执行insert,update,delete,query方法时系统调用的。
2、在manifest中定义provider

<provider  android:authorities="com.example.zt.logindatabase.MyContentProvider" android:name=".MyContentProvider"/>

这里定义的android:authorities就是我们需要提供给其他程序所使用的uri信息。
3.定义ContentResolver,用getContentResolver()来获取ContentResolver的对象

ContentResolver contentResolver = getContentResolver();

获取到ContentResolver 对象后,使用ContentResolver 的insert,delete,update,query方法获取信息。
PS:这四个方法都需要传入一个uri对象,这个Uri对象就是上面所定义的com.example.zt.logindatabase.MyContentProvider。

若想获取手机中联系人信息,可以这样:

ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.d("main",name + ":" +number);

        }

更多获取系统常用程序的数据,可以参考:
(http://blog.csdn.net/lo5sea/article/details/38308513)

你可能感兴趣的:(Android学习记录第六周)