智汇工业-智慧工业、智能制造及工业智能、工业互联门户网站,专业的工业“互联网+”传媒

Android應用之SQLite分頁讀取

來源:網絡

點擊:2146

A+ A-

所屬頻道:新聞中心

關鍵詞: Android,SQLite分頁

        Android包含了常用于嵌入式系統的SQLite,免去了開發者自己移植安裝的功夫。SQLite 支持多數 SQL92 標準,很多常用的SQL命令都能在SQLite上面使用,除此之外Android還提供了一系列自定義的方法去簡化對SQLite數據庫的操作。不過有跨平臺需求的程序就建議使用標準的SQL語句,畢竟這樣容易在多個平臺之間移植。

    先貼出本文程序運行的結果:

     

    本文主要講解了SQLite的基本用法,如:創建數據庫,使用SQL命令查詢數據表、插入數據,關閉數據庫,以及使用GridView實現了一個分頁欄(關于GridView的用法),用于把數據分頁顯示。

    分頁欄的pagebuttons.xml的源碼如下:

    view plaincopy to clipboardprint?
    <?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:layout_height="wrap_content" android:paddingBottom="4dip" 
        android:layout_width="fill_parent"> 
        <TextView android:layout_width="wrap_content" 
            android:layout_below="@+id/ItemImage" android:layout_height="wrap_content" 
            android:text="TextView01" android:layout_centerHorizontal="true" 
            android:id="@+id/ItemText"> 
        </TextView> 
    </RelativeLayout>   
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_height="wrap_content" android:paddingBottom="4dip"
     android:layout_width="fill_parent">
     <TextView android:layout_width="wrap_content"
      android:layout_below="@+id/ItemImage" android:layout_height="wrap_content"
      android:text="TextView01" android:layout_centerHorizontal="true"
      android:id="@+id/ItemText">
     </TextView>
    </RelativeLayout>  

    main.xml的源碼如下:

     

    view plaincopy to clipboardprint?
    <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:orientation="vertical" android:layout_width="fill_parent" 
        android:layout_height="fill_parent"> 
        <Button android:layout_height="wrap_content" 
            android:layout_width="fill_parent" android:id="@+id/btnCreateDB" 
            android:text="創建數據庫"></Button> 
        <Button android:layout_height="wrap_content" 
            android:layout_width="fill_parent" android:text="插入一串實驗數據" android:id="@+id/btnInsertRec"></Button> 
        <Button android:layout_height="wrap_content" android:id="@+id/btnClose" 
            android:text="關閉數據庫" android:layout_width="fill_parent"></Button> 
        <EditText android:text="@+id/EditText01" android:id="@+id/EditText01" 
            android:layout_width="fill_parent" android:layout_height="256dip"></EditText> 
        <GridView android:id="@+id/gridview" android:layout_width="fill_parent" 
            android:layout_height="32dip" android:numColumns="auto_fit" 
            android:columnWidth="40dip"></GridView> 
    </LinearLayout> 
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical" android:layout_width="fill_parent"
     android:layout_height="fill_parent">
     <Button android:layout_height="wrap_content"
      android:layout_width="fill_parent" android:id="@+id/btnCreateDB"
      android:text="創建數據庫"></Button>
     <Button android:layout_height="wrap_content"
      android:layout_width="fill_parent" android:text="插入一串實驗數據" android:id="@+id/btnInsertRec"></Button>
     <Button android:layout_height="wrap_content" android:id="@+id/btnClose"
      android:text="關閉數據庫" android:layout_width="fill_parent"></Button>
     <EditText android:text="@+id/EditText01" android:id="@+id/EditText01"
      android:layout_width="fill_parent" android:layout_height="256dip"></EditText>
     <GridView android:id="@+id/gridview" android:layout_width="fill_parent"
      android:layout_height="32dip" android:numColumns="auto_fit"
      android:columnWidth="40dip"></GridView>
    </LinearLayout>
     

    本文程序源碼如下:

    view plaincopy to clipboardprint?
    package com.testSQLite;    
        
    import java.util.ArrayList;    
    import java.util.HashMap;    
    import android.app.Activity;    
    import android.database.Cursor;    
    import android.database.SQLException;    
    import android.database.sqlite.SQLiteDatabase;    
    import android.os.Bundle;    
    import android.util.Log;    
    import android.view.View;    
    import android.widget.AdapterView;    
    import android.widget.AdapterView.OnItemClickListener;    
    import android.widget.Button;    
    import android.widget.EditText;    
    import android.widget.GridView;    
    import android.widget.SimpleAdapter;    
        
    public class testSQLite extends Activity {    
        /** Called when the activity is first created. */    
        Button btnCreateDB, btnInsert, btnClose;    
        EditText edtSQL;//顯示分頁數據    
        SQLiteDatabase db;    
        int id;//添加記錄時的id累加標記,必須全局    
        static final int PageSize=10;//分頁時,每頁的數據總數    
        private static final String TABLE_NAME = "stu";    
        private static final String ID = "id";    
        private static final String NAME = "name";    
            
        SimpleAdapter saPageID;// 分頁欄適配器    
        ArrayList<HashMap<String, String>> lstPageID;// 分頁欄的數據源,與PageSize和數據總數相關    
        
        @Override    
        public void onCreate(Bundle savedInstanceState) {    
            super.onCreate(savedInstanceState);    
            setContentView(R.layout.main);    
            btnCreateDB = (Button) this.findViewById(R.id.btnCreateDB);    
            btnCreateDB.setOnClickListener(new ClickEvent());    
        
            btnInsert = (Button) this.findViewById(R.id.btnInsertRec);    
            btnInsert.setOnClickListener(new ClickEvent());    
        
            btnClose = (Button) this.findViewById(R.id.btnClose);    
            btnClose.setOnClickListener(new ClickEvent());    
                
            edtSQL=(EditText)this.findViewById(R.id.EditText01);    
                
            GridView gridview = (GridView) findViewById(R.id.gridview);//分頁欄控件    
            // 生成動態數組,并且轉入數據    
            lstPageID = new ArrayList<HashMap<String, String>>();    
        
            // 生成適配器的ImageItem <====> 動態數組的元素,兩者一一對應    
            saPageID = new SimpleAdapter(testSQLite.this, // 沒什么解釋    
                    lstPageID,// 數據來源    
                    R.layout.pagebuttons,//XML實現    
                    new String[] { "ItemText" },    
                    new int[] { R.id.ItemText });    
        
            // 添加并且顯示    
            gridview.setAdapter(saPageID);    
            // 添加消息處理    
            gridview.setOnItemClickListener(new OnItemClickListener(){    
        
                @Override    
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,    
                        long arg3) {    
                    LoadPage(arg2);//根據所選分頁讀取對應的數據    
                }    
            });    
        
        }     
         


             
        class ClickEvent implements View.OnClickListener {    
        
            @Override    
            public void onClick(View v) {    
                if (v == btnCreateDB) {    
                    CreateDB();    
                } else if (v == btnInsert) {    
                    InsertRecord(16);//插入16條記錄    
                    RefreshPage();    
                }else if (v == btnClose) {    
                    db.close();    
                }    
            }    
        
        }    
            
        
        /*  
         * 讀取指定ID的分頁數據  
         * SQL:Select * From TABLE_NAME Limit 9 Offset 10;  
         * 表示從TABLE_NAME表獲取數據,跳過10行,取9行  
         */    
        void LoadPage(int pageID)    
        {    
            String sql= "select * from " + TABLE_NAME +     
            " Limit "+String.valueOf(PageSize)+ " Offset " +String.valueOf(pageID*PageSize);    
            Cursor rec = db.rawQuery(sql, null);    
        
            setTitle("當前分頁的數據總數:"+String.valueOf(rec.getCount()));    
                
            // 取得字段名稱    
            String title = "";    
            int colCount = rec.getColumnCount();    
            for (int i = 0; i < colCount; i++)    
                title = title + rec.getColumnName(i) + "     ";    
        
                
            // 列舉出所有數據    
            String content="";    
            int recCount=rec.getCount();    
            for (int i = 0; i < recCount; i++) {//定位到一條數據    
                rec.moveToPosition(i);    
                for(int ii=0;ii<colCount;ii++)//定位到一條數據中的每個字段    
                {    
                    content=content+rec.getString(ii)+"     ";    
                }    
                content=content+"\r\n";    
            }    
                
            edtSQL.setText(title+"\r\n"+content);//顯示出來    
            rec.close();    
        }    
            
        /*  
         * 在內存創建數據庫和數據表  
         */    
        void CreateDB() {    
            // 在內存創建數據庫    
            db = SQLiteDatabase.create(null);    
            Log.e("DB Path", db.getPath());    
            String amount = String.valueOf(databaseList().length);    
            Log.e("DB amount", amount);    
            // 創建數據表    
            String sql = "CREATE TABLE " + TABLE_NAME + " (" + ID    
                    + " text not null, " + NAME + " text not null " + ");";    
            try {    
                db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);    
                db.execSQL(sql);    
            } catch (SQLException e) {}    
        }    
        
        /*  
         * 插入N條數據  
         */    
        void InsertRecord(int n) {    
            int total = id + n;    
            for (; id < total; id++) {    
                String sql = "insert into " + TABLE_NAME + " (" + ID + ", " + NAME    
                        + ") values(''''''''" + String.valueOf(id) + "'''''''', ''''''''test'''''''');";    
                try {    
                    db.execSQL(sql);    
                } catch (SQLException e) {    
                }    
            }    
        }    
        
        /*  
         * 插入之后刷新分頁  
         */    
        void RefreshPage()    
        {    
            String sql = "select count(*) from " + TABLE_NAME;    
            Cursor rec = db.rawQuery(sql, null);    
            rec.moveToLast();    
            long recSize=rec.getLong(0);//取得總數    
            rec.close();    
            int pageNum=(int)(recSize/PageSize) + 1;//取得分頁數    
                
            lstPageID.clear();    
            for (int i = 0; i < pageNum; i++) {    
                HashMap<String, String> map = new HashMap<String, String>();    
                map.put("ItemText", "No." + String.valueOf(i));  
        
                lstPageID.add(map);    
            }    
            saPageID.notifyDataSetChanged();    
        }    
    }   

    (審核編輯: 智匯小新)

    聲明:除特別說明之外,新聞內容及圖片均來自網絡及各大主流媒體。版權歸原作者所有。如認為內容侵權,請聯系我們刪除。

    主站蜘蛛池模板: 河北安润防腐管业股份有限公司-远程供液管路_远距离供液管路_远程供液系统 | 洁衣库·U袋洗_网上洗衣店_网上干洗| 铜陵金玉米业有限责任公司【官网】| 上海办公家具_高端实木办公家具_现代智能办公家具定制厂-上海迈亚家具有限公司 | 上海恩计仪器首页-微生物限度检测仪-微生物限度仪厂家 | 生物质蒸发器_燃气蒸发器_燃气锅炉价格|厂家直销-山东泰锅锅炉设备有限公司 | 天下机械|机床商讯-机械网|机械技术|机械信息|机床资讯|机床设备|机床商讯杂志 | 指挥调度|调度系统|应急指挥调度|应急指挥|可视化调度|多媒体指挥调度|融合通信|综合调度|应急指挥系统|IP调度系统-北京瑞光极远数码科技有限公司 | 青岛除甲醛公司|青岛甲醛治理|青岛除甲醛|甲醛检测|光触媒除甲醛|装修除味除甲醛|新房除甲醛|青岛室内环境污染检测治理|青岛闪洁环保科技有限公司官网 | 专业无机盐,化工产品检测公司,水处理剂检测公司,第三方水质检测机构—准诺检测 | 展会设计搭建-展厅设计施工公司-展位展台设计搭建-深圳鼎泰展览 展柜设计定制-品牌展柜订做-展柜制作厂家「广州嘉艺展柜」 | 上海钧尚电器有限公司 - Faulhaber电机 AMETEK pittman电机 AMETEK ROTRON军用航空风机 Exlar电动缸 MAE电机 MCG电机 CP电动工具 马头工具 AMCI驱动器 直流电机 减速箱 直流伺服电机,无刷电机,直线电机 直流防爆电机 防爆电机 汽车助力转向电机 EPS电机 faulhaber motor faulhaber gearbox NANOTEC电机 ELWOOD电机 PHYTRON电机 EXLAR伺服电动缸 高力矩、高性能直流电机,音圈电机,风机,直流风机,航空风机 | 软化水设备_锅炉软水设备_全自动软化设备【安装维护、更换树脂】-青岛水处理设备厂家 | 耐腐蚀磁力泵,直立式耐酸碱泵,立式耐酸碱泵,自吸式耐酸碱泵-杰凯泵业【官网】 | 智汇工业-智慧工业、智能制造及工业智能、工业互联门户网站,专业的工业“互联网+”传媒 | 上海云屹国际快递-承接化工品_液体_粉末_化妆品_食品_锂电池等国际快递业务 | 上海塑料链条生产厂家-塑料网带批发-柔性齿形链价格-上海瀚幽传动机械有限公司 | 威海保温板,威海泡沫,威海EPS,威海EPP-威海东兴泡塑科技有限公司 | 湖南净声源环保科技有限公司是一家专业从事噪声治理和建筑声学设计生态环境综合治理服务的企业,专业从事株洲电梯隔音治理,湘潭中央空调降噪处理,衡阳邵阳冷却塔噪音治理,岳阳常德大型风机噪声隔音降噪,张家界空压机噪声治理,益阳配电房变压器噪声治理,专业郴州永州工厂企业车间噪声治理,怀化娄底专业机械设备减振降治理,武汉噪音治理隔音降噪公司,孝感噪音治理,立式球磨机的噪声控制,专业隔音降噪公司,、以及各类机械动力设备减振降噪噪声治理的公司,同时为客户提供咨询与解决方案 | 塑胶篮球场施工|塑胶网球场施工|幼儿园塑胶施工|石家庄亚强体育公司 | 企业旺旺-qy55.com| 汽车标签|医疗标签|电子标签|手机电池标签|电脑电池标签|电源标签|耐高温标签|防静电标签|手机出厂膜|手机全裹膜|手机包裹膜|手机卖点膜|热转印标签|遮阳板标签|天势科技|-标签印制专家! | 铱金供应-上海钌合金-氯铱酸厂家-上海庞势新材料科技有限公司 | 济南货架|济南仓储货架|济南仓库货架|山东蕴达金属制品有限公司 济南海纳特科技有限公司 | 自走式缠绕机_上海德目包装设备厂家_在线式缠绕机_缠绕膜打包机 自装卸(挂桶)车|钩臂垃圾车|压缩垃圾车|密封自卸车|环卫垃圾车|餐厨车泔水车湖北程力专用车厂家 | 胶带批发,淄博胶带厂家-山东同力胶粘制品有限公司 | 金华美凡文化传媒有限公司 | 液体灌装机_全自动灌装机_大桶灌装机_200L灌装机_涂料油漆灌装机-昆山灌装自动化设备有限公司 | 石英砂|无烟煤滤料|火山岩|聚合硫酸铁|活性炭-河南碧水清源水处理材料有限公司 | 曲阜市好博医疗器械有限公司_手术无影灯厂家,电动手术台出售,妇科手术台价格 | 生物质蒸发器_燃气蒸发器_燃气锅炉价格|厂家直销-山东泰锅锅炉设备有限公司 | 河北新鑫矿冶设备有限公司-河北新鑫矿冶设备有限公司 | 在线腐蚀率仪,在线污垢热阻仪,靶式光源仪-北京同德创业科技有限公司 | 上饶环亚电脑会计培训学校--电脑学校|上饶电脑学校|上饶电脑培训|会计培训|上饶会计培训|上饶县会计培训|广丰会计培训|玉山会计培训|横峰会计培训|上饶网店培训 上进电缆(嘉兴)股份有限公司官网 - 光伏电缆|防火电缆|电力电缆|铝合金电缆专业生产厂家 | 欧美日韩人妻精品一区二区三区_欧美成人精品欧美一级乱黄_亚洲欧美日韩高清一区二区三区_国产一级做a爰片久久毛片_日韩一级视频在线观看播放_精品一区二区三区免费毛片爱_完整观看高清秒播国内外精品资源 | 联系我们果博东方公司福布斯客服电话 | 山西档案架,智能档案密集架,手摇密集架,山西密集架厂家批发/报价 | 消泡剂厂家-水处理消泡剂-有机硅消泡剂-广东广州多美多消泡剂厂家 | 太阳能路灯 太阳能路灯厂家 路灯厂家-保定正联光电科技有限公司 太阳能光伏发电_太阳能热水器_空气能热水器_直饮净水器_深圳市大兴节能环保科技有限公司 | 化工网-化工新闻资讯平台-中华化工行业门户网站 | 乌鲁木齐万疆通管道设备有限公司 销售热线;13565955557-新疆 乌鲁木齐 万疆通 管道设备 波纹补偿器 膨胀节 金属软管 伸缩器 管件 阀门 维修 |