设为首页 收藏本站
查看: 1369|回复: 0

[经验分享] Android(OPhone) 学习笔记

[复制链接]

尚未签到

发表于 2016-11-29 11:31:01 | 显示全部楼层 |阅读模式
本文我们来实现一下Android内置SQLite数据库,该数据库对于创建它们的包套件是私有的,而且数据库不应该用来存贮文件。SQLite是一个轻量级的软件库,体积大小只用几千字节,一些SQL的指令只是部分支持,例如:ALTER、TABLE。

一、界面设置
首先设置界面如下,这里需要说明一下,完成界面描绘之后,可以不编写响应代码先运行,这样可以保证main.xml的无误。笔者曾经重复命名了两个button后直接编写响应代码,结果编写代码时发现总是出错,再看R.java里面一直没有id的class,导致了时间和精力的浪费。
DSC0000.gif

二、常用对象方法
在程序中,我们实现若干基本操作,删除的过程中包括查找,显示的过程中包括遍历。在这个例子中,需要引入若干的以前没用到的库:android.database.sqlite.*;android.util.Log;android.content.Context;android.database.*;
参考 http://www.ophonesdn.com/forum/thread.do?topicId=eb0e8fe9-8898-11de-ba0c-e1dca3c51327&forumId=17 的例子(不过该例子有一些小问题),定义如下变量和常量
    OnClickListener listener1 = null;
    OnClickListener listener2 = null;
    OnClickListener listener3 = null;
    OnClickListener listener4 = null;
    OnClickListener listener5 = null;
    Button button1;
    Button button2;
    Button button3;
    Button button4;
    Button button5;
    TextView tv;
    DatabaseHelper mOpenHelper;
    private static final String DATABASE_NAME = "dbForTest.db";
    private static final int DATABASE_VERSION = 1;
    private static final String TABLE_NAME = "diary";
    private static final String TITLE = "title";
    private static final String BODY = "body";

在create中编写如下代码:
DSC0001.gif

在设置好界面之后,准备好按钮响应:
DSC0002.gif

三、数据库初始化
在create的最后一行,创建了DatabaseHelper的一个对象,下面我们来看看这个对象是由什么构成的。
    private static class DatabaseHelper extends SQLiteOpenHelper {
            DatabaseHelper(Context context) {
                    super(context, DATABASE_NAME, null, DATABASE_VERSION);
            }
            @Override
            public void onCreate(SQLiteDatabase db) {
                    String sql = "CREATE TABLE " + TABLE_NAME + " (" + TITLE + " " + BODY + " " + ");";
                    db.execSQL(sql);
            }
            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            }
    }

四、常用数据库操作
1.创建表
    private void CreateTable() {
            SQLiteDatabase db = mOpenHelper.getWritableDatabase();//获得一个SQLiteDatabase实例
            String sql = "CREATE TABLE " + TABLE_NAME + " (" + TITLE + "  " + BODY + "  " + ");";
            try {
                    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
                    db.execSQL(sql);
                    setTitle("数据表成功重建");
            } catch (SQLException e) {
                    setTitle("数据表重建错误");
            }
    }

2.删除表
    private void dropTable() {
            SQLiteDatabase db = mOpenHelper.getWritableDatabase();
            String sql = "drop table " + TABLE_NAME;
            try {
                    db.execSQL(sql);
                    setTitle("数据表成功删除:" + sql);
            } catch (SQLException e) {
                    setTitle("数据表删除错误");
            }
    }

3.插入数据
    private void insertItem() {
            SQLiteDatabase db = mOpenHelper.getWritableDatabase();
            String sql1 = "insert into " + TABLE_NAME + " (" + TITLE + ", " + BODY
                            + ") values('haiyang', 'android的发展真是迅速啊');";
            String sql2 = "insert into " + TABLE_NAME + " (" + TITLE + ", " + BODY
                            + ") values('icesky', 'Ophone的发展真是迅速啊');";
            try {
                    db.execSQL(sql1);
                    db.execSQL(sql2);
                    setTitle("插入两条数据成功");
            } catch (SQLException e) {
                    setTitle("插入两条数据失败");
            }
    }

4.删除数据
    private void deleteItem() {
            try {
                    SQLiteDatabase db = mOpenHelper.getWritableDatabase();
                    db.delete(TABLE_NAME, " title = 'haiyang'", null);
                    setTitle("删除title为haiyang的一条记录");
            } catch (SQLException e) {
            }
    }

5.显示记录
流程为:获取数据库实例,设置指针,显示记录数,移动指针,遍历并显示数据。
    private void showItems() {
            SQLiteDatabase db = mOpenHelper.getReadableDatabase();
            String col[] = { TITLE, BODY };
            Cursor cur = db.query(TABLE_NAME, col, null, null, null, null, null);
            Integer num = cur.getCount();
            setTitle(Integer.toString(num) + " 条记录");
            cur.moveToFirst();
            tv.setText("");
            while (cur.getPosition()!=cur.getCount())
            {
            tv.append(Integer.toString(cur.getPosition())+" , "+cur.getString(cur.getColumnIndex("title"))+" , "+cur.getString(cur.getColumnIndex("body"))+"\n");
            cur.moveToNext();
            }
    }

五、执行结果
通过多次点击插入记录,显示结果如下:
DSC0003.gif

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-307204-1-1.html 上篇帖子: SQLite 轻量级数据库 下篇帖子: android中的sqlite操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表