Android入门数据库支持SQLite 内容提供器ContentProvider.docx

上传人:b****5 文档编号:6850555 上传时间:2023-01-11 格式:DOCX 页数:20 大小:86.81KB
下载 相关 举报
Android入门数据库支持SQLite 内容提供器ContentProvider.docx_第1页
第1页 / 共20页
Android入门数据库支持SQLite 内容提供器ContentProvider.docx_第2页
第2页 / 共20页
Android入门数据库支持SQLite 内容提供器ContentProvider.docx_第3页
第3页 / 共20页
Android入门数据库支持SQLite 内容提供器ContentProvider.docx_第4页
第4页 / 共20页
Android入门数据库支持SQLite 内容提供器ContentProvider.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

Android入门数据库支持SQLite 内容提供器ContentProvider.docx

《Android入门数据库支持SQLite 内容提供器ContentProvider.docx》由会员分享,可在线阅读,更多相关《Android入门数据库支持SQLite 内容提供器ContentProvider.docx(20页珍藏版)》请在冰豆网上搜索。

Android入门数据库支持SQLite 内容提供器ContentProvider.docx

Android入门数据库支持SQLite内容提供器ContentProvider

介绍

在Android中使用SQLite,ContentProvider 

数据库支持(SQLite)-Android开发平台提供了操作SQLite数据库的相关API

内容提供器(ContentProvider)-当数据需要在应用程序之间共享时,可以在某程序中使用ContentProvider定义URI,以使其它应用程序可以通过此URI访问指定的数据

1、SQLite的Demo

运行结果:

Main.xml

xmlversion="1.0"encoding="utf-8"?

>

xmlns:

android="

android:

layout_width="fill_parent"

android:

layout_height="fill_parent">

xmlns:

android="

android:

orientation="vertical"

android:

layout_width="fill_parent"

android:

layout_height="fill_parent">

android:

id="@+id/txtMsg"

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"/>

android:

id="@+id/btn1"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"/>

android:

id="@+id/btn2"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"/>

android:

id="@+id/btn3"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"/>

android:

id="@+id/btn4"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"/>

android:

id="@+id/btn5"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"/>

android:

id="@+id/btn6"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"/>

DatabaseHelper.java

代码

importandroid.content.Context;

importandroid.database.sqlite.SQLiteDatabase;

importandroid.database.sqlite.SQLiteOpenHelper;

importandroid.database.sqlite.SQLiteDatabase.CursorFactory;

publicclassDatabaseHelperextendsSQLiteOpenHelper{

publicDatabaseHelper(Contextcontext,Stringname,CursorFactoryfactory,

intversion){

super(context,name,factory,version);

}

@Override

//创建数据库后,对数据库的操作

publicvoidonCreate(SQLiteDatabasedb){

}

@Override

//更改数据库版本的操作

publicvoidonUpgrade(SQLiteDatabasedb,intarg1,intarg2){

}

@Override

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

publicvoidonOpen(SQLiteDatabasedb){

super.onOpen(db);

}

}

Main.java

代码

importjava.util.Random;

importandroid.app.Activity;

importandroid.content.ContentValues;

importandroid.database.Cursor;

importandroid.database.SQLException;

importandroid.database.sqlite.SQLiteDatabase;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

importandroid.widget.TextView;

publicclassMainextendsActivity{

privateDatabaseHelperdbHelper;

privatestaticfinalStringDATABASE_NAME="db.db";

privatestaticfinalintDATABASE_VERSION=1;

privatestaticfinalStringTABLE_NAME="employee";

TextViewtxtMsg;

/**Calledwhentheactivityisfirstcreated.*/

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

dbHelper=newDatabaseHelper(this,DATABASE_NAME,null,

DATABASE_VERSION);

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

Buttonbutton1=(Button)findViewById(R.id.btn1);

button1.setText("创建表");

button1.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

CreateTable();

}

});

Buttonbutton2=(Button)findViewById(R.id.btn2);

button2.setText("插入3条记录");

button2.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

insertItem();

}

});

Buttonbutton3=(Button)findViewById(R.id.btn3);

button3.setText("删除全部数据!

");

button3.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

deleteItem();

}

});

Buttonbutton4=(Button)findViewById(R.id.btn4);

button4.setText("更新指定数据");

button4.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

updateItem();

}

});

Buttonbutton5=(Button)findViewById(R.id.btn5);

button5.setText("显示全部数据");

button5.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

showItems();

}

});

Buttonbutton6=(Button)findViewById(R.id.btn6);

button6.setText("删除表");

button6.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

dropTable();

}

});

}

/**

*创建表格

*/

privatevoidCreateTable(){

SQLiteDatabasedb=dbHelper.getWritableDatabase();

Stringsql="CREATETABLEIFNOTEXISTS"+TABLE_NAME

+"(IDINTEGERPRIMARYKEY,NameVARCHAR,AgeINTEGER);";

try{

db.execSQL(sql);

txtMsg.append("数据表成功创建\n");

}catch(SQLExceptionex){

txtMsg.append("数据表创建错误\n"+ex.toString()+"\n");

}

}

/**

*插入数据

*/

privatevoidinsertItem(){

SQLiteDatabasedb=dbHelper.getWritableDatabase();

try{

Randomrandom=newRandom();

for(inti=0;i<3;i++){

Stringsql="insertinto"+TABLE_NAME

+"(name,age)values('name"+String.valueOf(i)

+"',"+random.nextInt()+")";

db.execSQL(sql);

}

txtMsg.append("成功插入3条数据\n");

}catch(Exceptione){

txtMsg.append("数据表创建错误\n"+e.toString()+"\n");

}

}

/**

*删除数据

*/

privatevoiddeleteItem(){

try{

SQLiteDatabasedb=dbHelper.getWritableDatabase();

db.delete(TABLE_NAME,"id<999",null);

txtMsg.append("数据删除成功!

\n");

}catch(Exceptione){

txtMsg.append("数据删除失败!

\n");

}

}

/**

*更新数据

*/

privatevoidupdateItem(){

SQLiteDatabasedb=dbHelper.getWritableDatabase();

try{

ContentValuesvalues=newContentValues();

values.put("name","批量更新后的名字");

db.update(TABLE_NAME,values,"id

",newString[]{"100"});

txtMsg.append("数据更新成功\n");

}catch(Exceptione){

txtMsg.append("数据更新失败\n");

}

}

/**

*查询数据

*/

privatevoidshowItems(){

SQLiteDatabasedb=dbHelper.getWritableDatabase();

try{

Stringcolumn[]={"id","name","age"};

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

null,null);

Integernum=cursor.getCount();

txtMsg.append("共"+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))+"\n");

cursor.moveToNext();

}

}catch(Exceptione){

txtMsg.append("读取数据失败\n"+e.toString()+"\n");

}

}

/**

*删除数据表

*/

privatevoiddropTable(){

SQLiteDatabasedb=dbHelper.getWritableDatabase();

Stringsql="DROPTABLEIFEXISTS"+TABLE_NAME;

try{

db.execSQL(sql);

txtMsg.append("数据删除成功!

");

}catch(Exceptione){

txtMsg.append("数据删除出错!

");

}

}

}

2、ContentProvider(内容提供器)的Demo

运行结果:

Main.xml

xmlversion="1.0"encoding="utf-8"?

>

android="

android:

orientation="vertical"

android:

layout_width="fill_parent"

android:

layout_height="fill_parent">

android:

id="@+id/btn1"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"/>

android:

id="@+id/btn2"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"/>

android:

id="@+id/btn3"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"/>

android:

id="@+id/btn4"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"/>

android:

id="@+id/btn5"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"/>

android:

id="@+id/btn6"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"/>

MyUser.java

代码

import.Uri;

importandroid.provider.BaseColumns;

publicclassMyUser{

//必须要有_id字段。

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

publicstaticfinalclassUserimplementsBaseColumns{

//定义CONTENT_URI

publicstaticfinalUriCONTENT_URI=Uri.parse("content:

//com.webabcd.MyContentProvider");

//表数据列

publicstaticfinalStringUSER_NAME="USER_NAME";

}

}

MyContentProvider.java

代码

packagecom.lgl;

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.FileOutputStream;

importorg.apache.http.util.EncodingUtils;

importandroid.content.ContentProvider;

importandroid.content.ContentUris;

importandroid.content.ContentValues;

importandroid.database.Cursor;

importandroid.database.MatrixCursor;

import.Uri;

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

publicclassMyContentProviderextendsContentProvider{

privateFilefile;

privateFileOutputStreamout;

privateFileInputStreamin;

//ContentProvider的删除数据接口

@Override

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

return0;

}

@Override

publicStringgetType(Uriuri){

returnnull;

}

//ContentProvider的插入数据接口

@Override

publicUriinsert(Uriuri,ContentValuesvalues){

try{

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

returnnull;

}

}

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

@Override

publicbooleanonCreate(){

try{

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

/data/data/包名/

//SD卡目录为:

/sdcard

file=newFile("/data/data/com.webabcd.contentprovider/","demo.txt");

if(!

file.exists())

file.createNewFile();

returntrue;

}catch(Exceptionex){

returnfalse;

}

}

//

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

当前位置:首页 > 成人教育 > 远程网络教育

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

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