在 Android 中使用 SQLite ContentProviderWord文档下载推荐.docx

上传人:b****5 文档编号:17639606 上传时间:2022-12-07 格式:DOCX 页数:12 大小:18.65KB
下载 相关 举报
在 Android 中使用 SQLite ContentProviderWord文档下载推荐.docx_第1页
第1页 / 共12页
在 Android 中使用 SQLite ContentProviderWord文档下载推荐.docx_第2页
第2页 / 共12页
在 Android 中使用 SQLite ContentProviderWord文档下载推荐.docx_第3页
第3页 / 共12页
在 Android 中使用 SQLite ContentProviderWord文档下载推荐.docx_第4页
第4页 / 共12页
在 Android 中使用 SQLite ContentProviderWord文档下载推荐.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

在 Android 中使用 SQLite ContentProviderWord文档下载推荐.docx

《在 Android 中使用 SQLite ContentProviderWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《在 Android 中使用 SQLite ContentProviderWord文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。

在 Android 中使用 SQLite ContentProviderWord文档下载推荐.docx

publicvoidonOpen(SQLiteDatabasedb){

super.onOpen(db);

//TODO每次成功打开数据库后首先被执行

Main.java

importjava.util.Random;

importandroid.app.Activity;

importandroid.content.ContentValues;

importandroid.database.Cursor;

importandroid.database.SQLException;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.widget.Button;

importandroid.widget.TextView;

publicclassMainextendsActivity{

privateDatabaseHelperdbHelper;

privatestaticfinalStringDATABASE_NAME="

db.db"

;

privatestaticfinalintDATABASE_VERSION=1;

privatestaticfinalStringTABLE_NAME="

employee"

TextViewtxtMsg;

/**Calledwhentheactivityisfirstcreated.*/

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

dbHelper=newDatabaseHelper(this,DATABASE_NAME,null,

DATABASE_VERSION);

txtMsg=(TextView)this.findViewById(R.id.txtMsg);

Buttonbtn1=(Button)this.findViewById(R.id.btn1);

btn1.setText("

创建表"

);

btn1.setOnClickListener(newButton.OnClickListener(){

publicvoidonClick(Viewv){

CreateTable();

});

Buttonbtn2=(Button)this.findViewById(R.id.btn2);

btn2.setText("

插入3条记录"

btn2.setOnClickListener(newButton.OnClickListener(){

insertItem();

Buttonbtn3=(Button)this.findViewById(R.id.btn3);

btn3.setText("

删除全部记录"

btn3.setOnClickListener(newButton.OnClickListener(){

deleteItem();

Buttonbtn4=(Button)this.findViewById(R.id.btn4);

btn4.setText("

更新指定数据"

btn4.setOnClickListener(newButton.OnClickListener(){

updateItem();

Buttonbtn5=(Button)this.findViewById(R.id.btn5);

btn5.setText("

显示全部数据"

btn5.setOnClickListener(newButton.OnClickListener(){

showItems();

Buttonbtn6=(Button)this.findViewById(R.id.btn6);

btn6.setText("

删除表"

btn6.setOnClickListener(newButton.OnClickListener(){

dropTable();

//创建数据表

privatevoidCreateTable(){

SQLiteDatabasedb=dbHelper.getWritableDatabase();

Stringsql="

CREATETABLEIFNOTEXISTS"

+TABLE_NAME

+"

(IDINTEGERPRIMARYKEY,NameVARCHAR,AgeINTEGER);

"

try{

db._execSQL(sql);

txtMsg.append("

数据表成功创建\n"

}catch(SQLExceptionex){

数据表创建错误\n"

+ex.toString()+"

\n"

//插入数据

privatevoidinsertItem(){

Randomrandom=newRandom();

for(inti=0;

i<

3;

i++){

insertinto"

(name,age)values('

name"

+String.valueOf(i)

'

"

+random.nextInt()+"

)"

//_execSQL()-执行指定的sql

成功插入3条数据\n"

插入数据失败\n"

//删除数据

privatevoiddeleteItem(){

db.delete(TABLE_NAME,"

id<

999999"

null);

成功删除数据\n"

}catch(SQLExceptione){

删除数据失败\n"

//更新数据

privatevoidupdateItem(){

ContentValuesvalues=newContentValues();

values.put("

批量更新后的名字"

db.update(TABLE_NAME,values,"

id<

?

newString[]{"

3"

});

成功更新数据\n"

更新数据失败\n"

//查询数据

privatevoidshowItems(){

SQLiteDatabasedb=dbHelper.getReadableDatabase();

String[]column={"

id"

age"

};

Cursorcursor=db.query(TABLE_NAME,column,null,null,null,

null,null);

Integernum=cursor.getCount();

共"

+Integer.toString(num)+"

条记录\n"

cursor.moveToFirst();

while(cursor.getPosition()!

=cursor.getCount()){

txtMsg.append(Integer.toString(cursor.getPosition())+"

"

+String.valueOf(cursor.getString(0))+"

+cursor.getString

(1)+"

+String.valueOf(cursor.getString

(2))+"

cursor.moveToNext();

读取数据失败\n"

//删除数据表

privatevoiddropTable(){

DROPTABLEIFEXISTS"

+TABLE_NAME;

数据表删除成功\n"

数据表删除错误\n"

2、ContentProvider的Demo

MyUser.java

packagecom.webabcd.contentprovider;

import.Uri;

importandroid.provider.BaseColumns;

//自定义ContentProvider所需的实体类

publicclassMyUser{

//必须要有_id字段。

本例中BaseColumn类中已经包含了_id字段

publicstaticfinalclassUserimplementsBaseColumns{

//定义CONTENT_URI

publicstaticfinalUriCONTENT_URI=Uri.parse("

content:

//com.webabcd.MyContentProvider"

//表数据列

publicstaticfinalStringUSER_NAME="

USER_NAME"

MyContentProvider.java

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.FileOutputStream;

importorg.apache.http.util.EncodingUtils;

importandroid.content.ContentProvider;

importandroid.content.ContentUris;

importandroid.database.MatrixCursor;

//继承ContentProvider以实现自定义的ContentProvider(基于文件的信息存储)

publicclassMyContentProviderextendsContentProvider{

privateFilefile;

privateFileOutputStreamout;

privateFileInputStreamin;

//ContentProvider的删除数据接口

publicintdelete(Uriuri,Stringselection,String[]selectionArgs){

//TODOAuto-generatedmethodstub

return0;

publicStringgetType(Uriuri){

returnnull;

//ContentProvider的插入数据接口

publicUriinsert(Uriuri,ContentValuesvalues){

out=newFileOutputStream(file);

out.write(values.getAsString(MyUser.User.USER_NAME).getBytes());

out.close();

introwId=0;

UrirowUri=ContentUris.appendId(

MyUser.User.CONTENT_URI.buildUpon(),rowId).build();

getContext().getContentResolver().notifyChange(rowUri,null);

returnrowUri;

}catch(Exceptione){

//创建用于保存信息的文件

publicbooleanonCreate(){

//每个包中应用程序的私有目录为:

/data/data/包名/

//SD卡目录为:

/sdcard

file=newFile("

/data/data/com.webabcd.contentprovider/"

demo.txt"

if(!

file.exists())

file.createNewFile();

returntrue;

}catch(Exceptionex){

returnfalse;

//ContentProvider的查询数据接口

publicCursorquery(Uriuri,String[]projection,Stringselection,

String[]selectionArgs,StringsortOrder){

Stringcontent;

in=newFileInputStream(file);

intlength=(int)file.length();

byte[]buffer=newbyte[length];

in.read(buffer,0,length);

content=EncodingUtils.getString(buffer,"

UTF-8"

in.close();

String[]columns=newString[]{MyUser.User._ID,MyUser.User.USER_NAME};

MatrixCursorcur=newMatrixCursor(columns);

String[]values=newString[]{"

0"

content};

cur.moveToFirst();

cur.addRow(values);

returncur;

//ContentProvider的更新数据接口

publicintupdate(Uriuri,ContentValuesvalues,Stringselection,

String[]selectionArgs){

importandroid.provider.Contacts;

importandroid.provider.Contacts.People;

importandroid.util.Log;

importandroid.widget.Toast;

/*

*几个常用的系统内置的ContentProvider如下:

*content:

//media/internal/images这个URI将返回设备上存储的所有图片

//contacts/people/这个URI将返回设备上的所有联系人信息

//contacts/people/45这个URI返回单个结果(联系人信息中ID为45的联系人记录)

*/

新增联系人记录"

insertRecords("

+String.valueOf(random.nextInt()),String

.valueOf(random.nextInt()));

查看联系人记录"

displayRecords();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1