加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite分页读取

发布时间:2020-12-12 20:11:04 所属栏目:百科 来源:网络整理
导读:转自http://www.android-study.com/jichuzhishi/493.html Android内置了常用于嵌入式系统的SQLite,免去了开发者自己安装的功夫。SQLite 支持多数 SQL92 标准,很多常用的SQL命令都能在SQLite上面使用,除此之外Android还提供了一系列自定义的方法去简化对SQ
1234567891011121314<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="wrap_content"android:paddingBottom="4dip"><TextViewandroid:id="@+id/ItemText"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/ItemImage"android:layout_centerHorizontal="true"android:text="TextView01"/></RelativeLayout>

main.xml源码

?12345678910111213141516171819202122232425262728293031323334353637<?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"><Buttonandroid:id="@+id/btnCreateDB"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="创建数据库"/><Buttonandroid:id="@+id/btnInsertRec"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="插入一串实验数据"/><Buttonandroid:id="@+id/btnClose"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="关闭数据库"/><EditTextandroid:id="@+id/EditText01"android:layout_width="fill_parent"android:layout_height="256dip"android:text="@+id/EditText01"/><GridViewandroid:id="@+id/gridview"android:layout_width="fill_parent"android:layout_height="32dip"android:numColumns="auto_fit"android:columnWidth="40dip"/></LinearLayout>

本文程序源码

?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173package 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和数据总数相关@Overridepublic 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() {@Overridepublic void onItemClick(AdapterView<?> arg0,View arg1,int arg2,long arg3) {LoadPage(arg2);// 根据所选分页读取对应的数据}});}class ClickEvent implements View.OnClickListener {@Overridepublic 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();}}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

转自http://www.android-study.com/jichuzhishi/493.html

Android内置了常用于嵌入式系统的SQLite,免去了开发者自己安装的功夫。SQLite 支持多数 SQL92 标准,很多常用的SQL命令都能在SQLite上面使用,除此之外Android还提供了一系列自定义的方法去简化对SQLite数据库的操作。不过有跨平台需求的程序就建议使用标准的SQL语句,毕竟这样容易在多个平台之间移植。

先贴出本文程序运行的结果:

本文主要讲解了SQLite的基本用法,如:创建数据库,使用SQL命令查询数据表、插入数据,关闭数据库,以及使用GridView实现了一个分页栏(关于GridView的用法),用于把数据分页显示。

分页栏的pagebuttons.xml的源码

?
    推荐文章
      热点阅读