读书人

android 惯用的数据库表以及操作说明

发布时间: 2012-09-09 09:27:54 作者: rapoo

android 常用的数据库表以及操作说明

?

Android??常用数据表操作总结

?

1:通话记录表

表名:calls

表的主要字段说明:

字段名

字段类型

备注

_id?

INTEGER?

记录标识

number?

TEXT

电话号码

date?

INTEGER

通话时间(注意是一个整形)

duration?

INTEGER

电话时长

new?

INTEGER

?

name?

TEXT

联系人

type

INTEGER

电话状态(1:打进来的电话,2:打出的电话,3:未接电话)

?

主要操作的涉及的代码:

查询系统通话记录

?

private?Cursor?queryAllCallsInfo(){

Uri?uri=CallLog.Calls.CONTENT_URI;

String?sortOrder=CallLog.Calls.DEFAULT_SORT_ORDER;

return?context.getContentResolver().query(uri,?null,?null,?null,?sortOrder);

}

?

根据电话删除系统通话记录

?

public?int?deleteSysCallInfoSByNum(String?number){

Uri?uri=CallLog.Calls.CONTENT_URI;

String?where=CallLog.Calls.NUMBER+"='"+number+"'";

Return?context.getContentResolver().delete(uri,?where,?null);

}

?

?

?

?

2:短信记录表

表名:sms

主要字段说明:

字段名

字段类型

备注

_id?

INTEGER?

记录标识

thread_id

INTEGER

对话的序号(conversation)

address

TEXT

发件人地址,手机号

person

INTEGER

发件人,返回一个数字就是联系人列表里的序号,陌生人为null(但是我查看系统存在联系人一下表该字段为null)

date?

INTEGER

发送短信的时间

read?

INTEGER?

是否阅读

status

INTEGER

状态(估计与网关的状态)

type

INTEGER

类型?1是接收到的,2是发出的

body

TEXT

消息体内容

service_center

TEXT

短信中心号码

主要操作涉及的代码

查询系统短信记录

?

/**

?*?查询系统所有收件箱短信记录

?*?@return

?*/

private?Cursor?queryAllInboxSmsInfo(){

System.out.println("---query?in?box?message----");

Uri?uri=Uri.parse("content://content://sms/inbox");//收件箱

String?sortOrder="date?desc";

return?context.getContentResolver().query(uri,?null,?null,?null,?sortOrder);

}

/**

?*?查询所有发件箱短信的内容

?*?@return

?*/

private?Cursor?queryAllSentSmsInfo(){

System.out.println("---query?send?box?message----");

Uri?uri=Uri.parse("content://sms/sent");//发件箱

String?sortOrder="date?desc";

return?context.getContentResolver().query(uri,?null,?null,?null,?sortOrder);

}

删除系统短信的方法

/**

?*?删除短信记录

?*?@param?threadId?短信的会话记录

?*?@return

?*/

public?int?deleteSysMessageByThreadId(long?threadId){

System.out.println("---------deleteSysMessageByThreadId-------");

?Uri?mUri=Uri.parse("content://sms/conversations/"?+?threadId);??

?return?context.getContentResolver().delete(mUri,?null,?null);??

}

3:联系人表

表名:contacts

主要字段的说明:

字段名

字段类型

备注

_id?

INTEGER?

记录标识,通过该字段找到响应其他表里面联系人详细信息

display_name

TEXT

联系人姓名

has_phone_number

INTEGER?

是否有电话号码,没有为0,有几个就返回几个

具体创建的SQL数据

CREATE?TABLE?contacts?

(_id?INTEGER?PRIMARY?KEY?AUTOINCREMENT,display_name?TEXT,

photo_id?INTEGER?REFERENCES?data(_id),

custom_ringtone?TEXT,

send_to_voicemail?INTEGER?NOT?NULL?DEFAULT?0,

times_contacted?INTEGER?NOT?NULL?DEFAULT?0,last_time_contacted?INTEGER,

starred?INTEGER?NOT?NULL?DEFAULT?0,in_visible_group?INTEGER?NOT?NULL?DEFAULT?1,

has_phone_number?INTEGER?NOT?NULL?DEFAULT?0,

lookup?TEXT,status_update_id?INTEGER?REFERENCES?data(_id),

single_is_restricted?INTEGER?NOT?NULL?DEFAULT?0)

?

主要涉及的操作代码:

查询所有的联系信息

public?void?getContact()?{

Uri?uri?=?ContactsContract.Contacts.CONTENT_URI;

Cursor?cursor?=?getContentResolver().query(uri,?null,?null,?null,?null);

if?(cursor.moveToFirst())?{

?

int?idColumnIndex?=?cursor

.getColumnIndex(ContactsContract.Contacts._ID);

System.out.println("-------idColumnIndex----------:"

+?idColumnIndex);

?

int?displayNameColumnIndex?=?cursor

.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);

System.out.println("--------------displayNameColumnIndex------"

+?displayNameColumnIndex);

?

do?{

//?获取联系人的ID号

String?contactId?=?cursor.getString(idColumnIndex);

System.out.println("---------contactId-------"?+?contactId);

//?获取联系人姓名

String?displayName?=?cursor.getString(displayNameColumnIndex);

System.out.println("--------------displayName-----"

+?displayName);

?

//?查看该联系人有多少个电话号码。如果没有这返回值为0

int?phoneCount?=?cursor

.getInt(cursor

.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

if?(phoneCount?>?0)?{

?

//如果只想查询手机号码的话就只执行下面的代码

//

//Cursor?phones?=?mContext.getContentResolver().query(

//?ContactsContract.CommonDataKinds.Phone.CONTENT_URI,

//?null,

//font-size: 10.5pt; font-family:

读书人网 >其他数据库

热点推荐