Android 深入了解SQLite存储方式Word格式.docx

上传人:b****6 文档编号:20082385 上传时间:2023-01-16 格式:DOCX 页数:12 大小:53.91KB
下载 相关 举报
Android 深入了解SQLite存储方式Word格式.docx_第1页
第1页 / 共12页
Android 深入了解SQLite存储方式Word格式.docx_第2页
第2页 / 共12页
Android 深入了解SQLite存储方式Word格式.docx_第3页
第3页 / 共12页
Android 深入了解SQLite存储方式Word格式.docx_第4页
第4页 / 共12页
Android 深入了解SQLite存储方式Word格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Android 深入了解SQLite存储方式Word格式.docx

《Android 深入了解SQLite存储方式Word格式.docx》由会员分享,可在线阅读,更多相关《Android 深入了解SQLite存储方式Word格式.docx(12页珍藏版)》请在冰豆网上搜索。

Android 深入了解SQLite存储方式Word格式.docx

什么是ContentValues类?

ContentValues类和Hashmap/Hashtable比较类似,它也是负责存储一些名值对,但是它存储的名值对当中的名是一个

String类型,而值都是基本类型。

什么是Cursor?

Cursor在Android当中是一个非常有用的接口,通过Cursor我们可以对从数据库查询出来的结果集进行随 

机的读写访问。

OK,基本知识就介绍到这里,下面开始上代码:

还是按照我的一贯风格,代码中该解释的地方都已经在代码中及时注释和讲解了!

顺便来张项目截图:

我们先来看看xml的代码:

java代码:

1.<

?

xmlversion="

1.0"

encoding="

utf-8"

>

2.<

LinearLayoutxmlns:

android="

3.android:

orientation="

vertical"

android:

layout_width="

fill_parent"

4.android:

layout_height="

5.<

TextViewandroid:

6.android:

wrap_content"

text="

SQL练习!

(如果你使用的SD卡存储数据方式,为了保证正常操作,请你先点击创建一张表然后再操作)"

7.android:

textSize="

20sp"

textColor="

#ff0000"

id="

@+id/tv_title"

/>

8.<

Buttonandroid:

@+id/sql_addOne"

9.android:

插入一条记录"

<

/Button>

10.<

@+id/sql_check"

11.android:

查询数据库"

12.<

@+id/sql_edit"

13.android:

修改一条记录"

14.<

@+id/sql_deleteOne"

15.android:

删除一条记录"

16.<

@+id/sql_deleteTable"

17.android:

删除数据表单"

18.<

@+id/sql_newTable"

19.android:

新建数据表单"

20.<

/LinearLayout>

复制代码

xml中定义了我们需要练习用到的几个操作按钮,这里不多解释了,下面看java源码:

先看我们继承的SQLiteOpenHelper类

1.packageeoe.demo;

2.

3.

4.importandroid.content.Context;

5.importandroid.database.sqlite.SQLiteDatabase;

6.importandroid.database.sqlite.SQLiteOpenHelper;

7.importandroid.util.Log;

8./**

9.*

10.*@authorHimi

11.*@解释此类我们只需要传建一个构造函数以及重写两个方法就OK啦、

12.*

13.*/

14.publicclassMySQLiteOpenHelperextendsSQLiteOpenHelper{

15.publicfinalstaticintVERSION=1;

//版本号

16.publicfinalstaticStringTABLE_NAME="

himi"

;

//表名

17.publicfinalstaticStringID="

id"

//后面ContentProvider使用

18.publicfinalstaticStringTEXT="

text"

19.publicstaticfinalStringDATABASE_NAME="

Himi.db"

20.publicMySQLiteOpenHelper(Contextcontext){

21.//在Android中创建和打开一个数据库都可以使用openOrCreateDatabase方法来实现,

22.//因为它会自动去检测是否存在这个数据库,如果存在则打开,不过不存在则创建一个数据库;

23.//创建成功则返回一个SQLiteDatabase对象,否则抛出异常FileNotFoundException。

24.//下面是来创建一个名为"

DATABASE_NAME"

的数据库,并返回一个SQLiteDatabase对象

25.

26.super(context,DATABASE_NAME,null,VERSION);

27.}

28.@Override

29.//在数据库第一次生成的时候会调用这个方法,一般我们在这个方法里边生成数据库表;

30.publicvoidonCreate(SQLiteDatabasedb){

31.Stringstr_sql="

CREATETABLE"

+TABLE_NAME+"

("

+ID

32.+"

INTEGERPRIMARYKEYAUTOINCREMENT,"

+TEXT+"

text);

"

33.//CREATETABLE创建一张表然后后面是我们的表名

34.//然后表的列,第一个是id方便操作数据,int类型

35.//PRIMARYKEY是指主键这是一个int型,用于唯一的标识一行;

36.//AUTOINCREMENT表示数据库会为每条记录的key加一,确保记录的唯一性;

37.//最后我加入一列文本String类型

38.//----------注意:

这里str_sql是sql语句,类似dos命令,要注意空格!

39.db.execSQL(str_sql);

40.//execSQL()方法是执行一句sql语句

41.//虽然此句我们生成了一张数据库表和包含该表的sql.himi文件,

42.//但是要注意不是方法是创建,是传入的一句str_sql这句sql语句表示创建!

43.}

44.@Override

45.publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){

46.//一般默认情况下,当我们插入数据库就立即更新

47.//当数据库需要升级的时候,Android系统会主动的调用这个方法。

48.//一般我们在这个方法里边删除数据表,并建立新的数据表,

49.//当然是否还需要做其他的操作,完全取决于游戏需求。

50.Log.v("

Himi"

"

onUpgrade"

);

51.}

52.}

下面看最重要的MainActivity中的代码:

4.importjava.io.File;

5.importjava.io.IOException;

6.importandroid.app.Activity;

7.importandroid.content.ContentValues;

8.importandroid.database.Cursor;

9.importandroid.database.sqlite.SQLiteDatabase;

10.importandroid.os.Bundle;

11.importandroid.view.View;

12.importandroid.view.Window;

13.importandroid.view.WindowManager;

14.importandroid.view.View.OnClickListener;

15.importandroid.widget.Button;

16.importandroid.widget.TextView;

17.

18.

19.//------------第三种保存方式--------《SQLite》---------

20./**

21.*@authorHimi

22.*@保存方式:

SQLite轻量级数据库、

23.*@优点:

可以将自己的数据存储到文件系统或者数据库当中,也可以将自己的数据存

24.*储到SQLite数据库当中,还可以存到SD卡中

25.*@注意1:

数据库对于一个游戏(一个应用)来说是私有的,并且在一个游戏当中,

26.*数据库的名字也是唯一的。

27.*@注意2apk中创建的数据库外部的进程是没有权限去读/写的,

28.*我们需要把数据库文件创建到sdcard上可以解决类似问题.

29.*@注意3当你删除id靠前的数据或者全部删除数据的时候,SQLite不会自动排序,

30.*也就是说再添加数据的时候你不指定id那么SQLite默认还是在原有id最后添加一条新数据

31.*@注意4android中的SQLite语法大小写不敏感,也就是说不区分大小写;

32.*

33.*/

34.publicclassMainActivityextendsActivityimplementsOnClickListener{

35.privateButtonbtn_addOne,btn_deleteone,btn_check,btn_deleteTable,

36.btn_edit,btn_newTable;

37.privateTextViewtv;

38.privateMySQLiteOpenHelpermyOpenHelper;

//创建一个继承SQLiteOpenHelper类实例

39.privateSQLiteDatabasemysql;

40.//---------------以下两个成员变量是针对在SD卡中存储数据库文件使用

41.//privateFilepath=newFile("

/sdcard/himi"

//创建目录

42.//privateFilef=newFile("

/sdcard/himi/himi.db"

//创建文件

43.@Override

44.publicvoidonCreate(BundlesavedInstanceState){

45.super.onCreate(savedInstanceState);

46.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

47.WindowManager.LayoutParams.FLAG_FULLSCREEN);

48.this.requestWindowFeature(Window.FEATURE_NO_TITLE);

49.setContentView(R.layout.main);

50.tv=(TextView)findViewById(R.id.tv_title);

51.btn_addOne=(Button)findViewById(R.id.sql_addOne);

52.btn_check=(Button)findViewById(R.id.sql_check);

53.btn_deleteone=(Button)findViewById(R.id.sql_deleteOne);

54.btn_deleteTable=(Button)findViewById(R.id.sql_deleteTable);

55.btn_newTable=(Button)findViewById(R.id.sql_newTable);

56.btn_edit=(Button)findViewById(R.id.sql_edit);

57.btn_edit.setOnClickListener(this);

58.btn_addOne.setOnClickListener(this);

59.btn_check.setOnClickListener(this);

60.btn_deleteone.setOnClickListener(this);

61.btn_deleteTable.setOnClickListener(this);

62.btn_newTable.setOnClickListener(this);

63.myOpenHelper=newMySQLiteOpenHelper(this);

//实例一个数据库辅助器

64.//备注1----如果你使用的是将数据库的文件创建在SD卡中,那么创建数据库mysql如下操作:

65.//if(!

path.exists()){//目录存在返回false

66.//path.mkdirs();

//创建一个目录

67.//}

68.//if(!

f.exists()){//文件存在返回false

69.//try{

70.//f.createNewFile();

//创建文件

71.//}catch(IOExceptione){

72.////TODOAuto-generatedcatchblock

73.//e.printStackTrace();

74.//}

75.//}

76.}

77.@Override

78.publicvoidonClick(Viewv){

79.try{

80.//备注2----如果你使用的是将数据库的文件创建在SD卡中,那么创建数据库mysql如下操作:

81.//mysql=SQLiteDatabase.openOrCreateDatabase(f,null);

82.//备注3---如果想把数据库文件默认放在系统中,那么创建数据库mysql如下操作:

83.mysql=myOpenHelper.getWritableDatabase();

//实例数据库

84.if(v==btn_addOne){//添加数据

85.//----------------------读写句柄来插入---------

86.//ContentValues其实就是一个哈希表HashMap,key值是字段名称,

87.//Value值是字段的值。

然后通过ContentValues的put方法就可以

88.//把数据放到ContentValues中,然后插入到表中去!

89.ContentValuescv=newContentValues();

90.cv.put(MySQLiteOpenHelper.TEXT,"

测试新的数据"

91.mysql.insert(MySQLiteOpenHelper.TABLE_NAME,null,cv);

92.//inser()第一个参数标识需要插入操作的表名

93.//第二个参数:

默认传null即可

94.//第三个是插入的数据

95.//----------------------SQL语句插入--------------

96.//StringINSERT_DATA=

97.//"

INSERTINTOhimi(id,text)values(1,'

通过SQL语句插入'

)"

98.//db.execSQL(INSERT_DATA);

99.tv.setText("

添加数据成功!

点击查看数据库查询"

100.}elseif(v==btn_deleteone){//删除数据

101.//----------------------读写句柄来删除

102.mysql.delete("

MySQLiteOpenHelper.ID+"

=1"

null);

103.//第一个参数需要操作的表名

104.//第二个参数为id+操作的下标如果这里我们传入null,表示全部删除

105.//第三个参数默认传null即可

106.//-----------------------SQL语句来删除

107.//StringDELETE_DATA="

DELETEFROMhimiWHEREid=1"

108.//db.execSQL(DELETE_DATA);

109.tv.setText("

删除数据成功!

110.}elseif(v==btn_check){//遍历数据

111.//备注4------

112.Cursorcur=mysql.rawQuery("

SELECT*FROM"

113.+MySQLiteOpenHelper.TABLE_NAME,null);

114.if(cur!

=null){

115.Stringtemp="

116.inti=0;

117.while(cur.moveToNext()){//直到返回false说明表中到了数据末尾

118.temp+=cur.getString(0);

119.//参数0指的是列的下标,这里的0指的是id列

120.temp+=cur.getString

(1);

121.//这里的0相对于当前应该是咱们的text列了

122.i++;

123.temp+="

"

//这里是我整理显示格式,呵呵~

124.if(i%3==0)//这里是我整理显示格式,呵呵~

125.temp+="

\n"

//这里是我整理显示格式,呵呵~

126.}

127.tv.setText(temp);

128.}

129.}elseif(v==btn_edit){//修改数据

130.//------------------------句柄方式来修改-------------

131.ContentValuescv

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

当前位置:首页 > 法律文书 > 辩护词

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

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