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

来源:互联网 发布:java飞机大战跟踪弹 编辑:程序博客网 时间:2024/06/07 10:58
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 intdeleteSysCallInfoSByNum(Stringnumber){

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

短信中心号码

主要操作涉及的代码

查询系统短信记录

private Cursor queryAllInboxSmsInfo(){

System. out.println("---queryin box message----" );

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

String sortOrder= "date desc" ;

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

}

private Cursor queryAllSentSmsInfo(){

System. out.println("---querysend box message----" );

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

String sortOrder= "date desc" ;

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

}

删除系统短信的方法

public intdeleteSysMessageByThreadId(longthreadId){

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

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

returncontext.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_nameTEXT,

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 DEFAULT0,in_visible_groupINTEGER 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 NULLDEFAULT0)

主要涉及的操作代码:

查询所有的联系信息

public voidgetContact(){

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) {

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

//

// Cursorphones= mContext.getContentResolver().query(

// ContactsContract.CommonDataKinds.Phone.CONTENT_URI,

// null,

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