文档章节

Android数据读取之Sqlite数据库操作

farina
 farina
发布于 2016/10/10 11:18
字数 1420
阅读 24
收藏 0

咱们书接上文,继续来说说Android数据读取,这回,我们要讲的是Sqlite数据库的相关操作。以一个实例开始吧:

 

首先,上图,看看做成后的效果:

\

\

 

\

大概描述:类似于浏览器的收藏夹,网站名称,网站地址,网站描述,添加完成之后显示已添加的所有的内容,在ListView单击弹出是否删除对话框,删除成功后刷新视图并重新查询内容。

安卓提供了创建和使用SQLite数据库的API。SQLiteDataBase代表一个数据库对象,提供了操作数据库的一些方法,另外还有一个SQLiteOpenHelper工具类更简洁的功能。

main.xml是添加界面,query.xml是查询界面,DBHelper是数据库操作类,MainActivity和QueryActivity分别对应main和query的Activity,其中,QueryActivity继承ListActivity。源代码如下:

DBHelper.java

 

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

package com.lzugis.database;

 

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

 

public class DBHelper extends SQLiteOpenHelper

{

    //数据库名称

    private static final String DB_NAME="coll.db";

    //表名称

    private static final String TBL_NAME="CollTbl";

    //创建表SQL语句

    private static final String CREATE_TBL=" create table "

            +" CollTbl(_id integer primary key autoincrement,name text,url text,desc text)";

    //SQLiteDatabase实例

    private SQLiteDatabase db;

     

    /*

     * 构造方法

     */

    DBHelper(Context c){

        super(c,DB_NAME,null,2);

    };

    /*

     * 创建表

     * @see android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase)

     */

    public void onCreate(SQLiteDatabase db)

    {

        this.db=db;

        db.execSQL(CREATE_TBL);

    }

    /*

     * 插入方法

     */

    public void insert(ContentValues values)

    {

        //获得SQLiteDatabase实例

        SQLiteDatabase db=getWritableDatabase();

        //插入

        db.insert(TBL_NAME, null, values);

        //关闭

        db.close();

    }

    /*

     * 查询方法

     */

    public Cursor query()

    {

        //获得SQLiteDatabase实例

        SQLiteDatabase db=getWritableDatabase();

        //查询获得Cursor

        Cursor c=db.query(TBL_NAME, null, null, null, null, null, null);

        return c;

    }

    /*

     * 删除方法

     */

    public void del(int id)

    {

        if(db==null)

        {

            //获得SQLiteDatabase实例

            db=getWritableDatabase();          

        }

        //执行删除

        db.delete(TBL_NAME, "_id=?", new String[]{String.valueOf(id)});    

    }

    /*

     * 关闭数据库

     */

    public void colse()

    {

        if(db!=null)

        {

            db.close();

        }

    }

    @Override

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        // TODO Auto-generated method stub

         

    }

}

main.xml

 

 

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">

 

    <textview android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="网站名称">

 

    <edittext android:id="@+id/EditTextName" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10">

 

        <requestfocus>

    </requestfocus></edittext>

 

    <textview android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="网站地址">

 

    <edittext android:id="@+id/EditTextUrl" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10">

 

    <textview android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="网站描述">

 

    <edittext android:id="@+id/EditTextDesc" android:layout_width="match_parent" android:layout_height="100dp" android:ems="10">

 

    <button android:id="@+id/ButtonAdd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="添加">

 

</button></edittext></textview></edittext></textview></textview></linearlayout>

MainActivity.java

 

 

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

package com.lzugis.database;

 

import android.os.Bundle;

import android.app.Activity;

import android.content.ContentValues;

import android.content.Intent;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

 

public class MainActivity extends Activity {

    private EditText etName,etUrl,etDesc;

    private Button btnAdd;

     

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        etName=(EditText)findViewById(R.id.EditTextName);

        etUrl=(EditText)findViewById(R.id.EditTextUrl);

        etDesc=(EditText)findViewById(R.id.EditTextDesc);

         

        btnAdd=(Button)findViewById(R.id.ButtonAdd);

        btnAdd.setOnClickListener(new OnClickListener(){

 

            @Override

            public void onClick(View v) {

                // TODO Auto-generated method stub

                String name=etName.getText().toString();

                String url=etUrl.getText().toString();

                String desc=etDesc.getText().toString();

                //内容值实例

                ContentValues values=new ContentValues();

                //在value中添加信息

                values.put("name",name);

                values.put("url", url);

                values.put("desc", desc);

                //实例化数据帮助类

                DBHelper helper=new DBHelper(getApplicationContext());

                //插入数据

                helper.insert(values);

                //实例化intent

                Intent intent=new Intent(MainActivity.this,QueryActivity.class);

                //启动Activity

                startActivity(intent);

            }

             

        });

    }

 

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.main, menu);

        return true;

    }

 

}


query.xml

 

 

?

1

2

3

4

5

6

7

8

9

10

11

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">

 

    <textview android:id="@+id/text0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingright="10pt">

 

    <textview android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingright="10pt">

 

    <textview android:id="@+id/text2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingright="10pt">

 

    <textview android:id="@+id/text3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingright="10pt">

 

</textview></textview></textview></textview></linearlayout>


QueryActivity.java

 

 

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

package com.lzugis.database;

 

import android.os.Bundle;

import android.app.AlertDialog;

import android.app.ListActivity;

import android.content.DialogInterface;

import android.database.Cursor;

import android.support.v4.widget.SimpleCursorAdapter;

import android.view.Menu;

import android.view.View;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ListView;

 

public class QueryActivity extends ListActivity {

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        //设置标题

        this.setTitle("浏览收藏信息");

        //实例化数据库帮助类

        final DBHelper helper=new DBHelper(this);

        //查询获得游标

        Cursor c=helper.query();

        //列表项数组

        String[] from={"_id","name","url","desc"};

        //列表项ID

        int[] to={R.id.text0,R.id.text1,R.id.text2,R.id.text3};

        //适配器

        SimpleCursorAdapter apt=new SimpleCursorAdapter(this,R.layout.query,c,from,to);

        //列表视图

        ListView listview =getListView();

        //为列表视图添加适配器

        listview.setAdapter(apt);

         

        //提示对话框

        final AlertDialog.Builder builder=new AlertDialog.Builder(this);

        //为listView添加监听器

        listview.setOnItemClickListener(new OnItemClickListener(){

 

            @Override

            public void onItemClick(AdapterView<!--?--> arg0, View arg1, int arg2,

                    long arg3) {

                // TODO Auto-generated method stub

                final long temp=arg3;

                builder.setMessage("真的要删除记录吗?")

                       .setPositiveButton("是", new DialogInterface.OnClickListener() {                     

                        @Override

                        public void onClick(DialogInterface dialog, int which) {

                            // TODO Auto-generated method stub

                            //删除数据

                            helper.del((int)temp);

                            //重新查询

                            Cursor c=helper.query();

                            //列表项数组

                            String[] from={"_id","name","url","desc"};

                            //列表项ID

                            int[] to={R.id.text0,R.id.text1,R.id.text2,R.id.text3};

                            //适配器

                            SimpleCursorAdapter apt=new SimpleCursorAdapter(getApplicationContext(),R.layout.query,c,from,to);

                            //列表视图

                            ListView listview =getListView();

                            //为列表视图添加适配器

                            listview.setAdapter(apt);

                        }

                    })

                    .setNegativeButton("否", new DialogInterface.OnClickListener() {

                         

                        @Override

                        public void onClick(DialogInterface dialog, int which) {

                            // TODO Auto-generated method stub                         

                        }

                    });

                AlertDialog ad=builder.create();

                ad.show();

            }          

             

        });

        helper.close();

    }

 

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.query, menu);

        return true;

    }

 

}

 

 

附件:

有需要源码的请移步:http://download.csdn.net/detail/gisshixisheng/6733227

本文转载自:http://www.2cto.com/kf/201312/265878.html

上一篇: AS中设置GIT
下一篇: JSON的总结
farina
粉丝 1
博文 21
码字总数 1473
作品 0
浦东
Android工程师
私信 提问
Android 开发中使用 SQLite 数据库

SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都...

红薯
2010/08/22
67.6K
32
Android SMS(二)—— 读取短信保存到 SQLite

Android 之 SMS 短信在Android系统中是保存在SQLite数据库中的,但不让其它程序访问(Android系统的安全机制) 现在我们在读取手机内的SMS短信,先保存在我们自己定义的SQLite数据库中,然后...

长平狐
2013/01/06
425
0
Android 数据存储与读取:SQLite

在Android平台上,集成了一个嵌入式关系型数据库—SQLite。如果你想要开发 Android 应用程序,一定需要在 Android 上存储数据,使用SQLite 数据库是一种非常好的选择。 下面介绍的基本使用:...

长平狐
2012/10/08
373
0
Android读写SQLite数据库并导出SQLite数据写入到Excel表中

版权声明:本文为Zhang Phil原创文章,请不要转载! https://blog.csdn.net/zhangphil/article/details/86083376 Android读写SQLite数据库并导出SQLite数据写入到Excel表中 需要先引入Apach...

zhangphil
01/21
0
0
安卓应用安全指南 4.5.3 使用 SQLite 高级话题

安卓应用安全指南 4.5.3 使用 SQLite 高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.0 4.5.3.1 在 SQL 语句的断言中使用通配符...

apachecn_飞龙
2018/03/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JavaScript设计模式——适配器模式

  适配器模式是设计模式行为型模式中的一种模式;   定义:   适配器用来解决两个已有接口之间不匹配的问题,它并不需要考虑接口是如何实现,也不用考虑将来该如何修改;适配器不需要修...

有梦想的咸鱼前端
10分钟前
1
0
Andorid SQLite数据库开发基础教程(1)

Andorid SQLite数据库开发基础教程(1) Android数据库访问方式 SQLite是Android系统默认支持的文件数据库。该数据库支持SQL语言,适合开发人员上手。本教程将讲解如何开发使用SQLite的Andro...

大学霸
13分钟前
1
0
Handler简解

Handler 这里简化一下代码 以便理解 Handler不一定要在主线程建 但如Handler handler = new Handler(); 会使用当前的Looper的, 由于要更新UI 所以最好在主线程 new Handler() { mLooper = Lo...

shzwork
35分钟前
4
0
h5获取摄像头拍照功能

完整代码展示: <!DOCTYPE html> <head> <title>HTML5 GetUserMedia Demo</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum......

诗书易经
38分钟前
3
0
正向代理和反向代理

文章来源 运维公会:正向代理和反向代理 1、正向代理 (1)服务对象不同 正向代理服务器的服务对象是客户端,可以将客户端和代理服务器看作一个整体。 (2)配置方法不同 需要在客户端配置代...

运维团
54分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部