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

咱们书接上文,继续来说说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

转载于:https://my.oschina.net/farina/blog/756166

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值