Android包含了常用于嵌入式系统的SQLite,免去了开发者自己移植安装的功夫。SQLite 支持多数 SQL92 标准,很多常用的SQL命令都能在SQLite上面使用,除此之外Android还提供了一系列自定义的方法去简化对SQLite数据库的操作。不过有跨平台需求的程序就建议使用标准的SQL语句,毕竟这样容易在多个平台之间移植。
先贴出本文程序运行的结果:
本文主要讲解了SQLite的基本用法,如:创建数据库,使用SQL命令查询数据表、插入数据,关闭数据库,以及使用GridView实现了一个分页栏(关于GridView的用法),用于把数据分页显示。
分页栏的pagebuttons.xml的源码如下:
- <?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的源码如下:
- <?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>
本文程序源码如下:
- 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 {
-
- Button btnCreateDB, btnInsert, btnClose;
- EditText edtSQL;
- SQLiteDatabase db;
- int 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;
-
- @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>>();
-
-
- saPageID = new SimpleAdapter(testSQLite.this,
- lstPageID,
- R.layout.pagebuttons,
- 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);
- RefreshPage();
- }else if (v == btnClose) {
- db.close();
- }
- }
-
- }
-
-
-
-
-
-
-
- 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) {}
- }
-
-
-
-
- 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://blog.csdn.net/hellogv/article/details/6011934
分享到:
相关推荐
本教程将深入探讨如何在Qt应用中实现SQLite数据库的数据分页显示。 首先,我们需要在Qt项目中集成SQLite数据库支持。在Qt Creator中,新建一个Qt Widgets Application项目,然后在.pro文件中添加`QT += sql`来启用...
这是一个使用C#开发的Sqlite数据库创建、操作的源码工程,关于Sqlite的所有操作已经单独创建了专门的跨平台【.NETCore3.1】类库包含相应的帮助类,可以直接生成后拿到任何项目中直接使用,高效简单,省去了从头开发...
公式select * from person limit ?,?; (第一个? 当前页码第一条数据的下标,第二个? 每页显示的数据) 1.页码为1时在ListView中展示对应的数据 2.当ListView加载完本页数据分页加载下一页数据
C#连接SQLite数据库并实现分页显示的教程 在C#开发Windows应用程序时,有时我们需要连接SQLite数据库并显示数据,特别是在处理大量数据时,分页显示尤为重要,这能提高用户体验并减少内存消耗。本教程将指导你如何...
本项目“winform使用sqlite数据库自定义用户控件分页源码”结合了这两者,通过C#语言实现了一个自定义的分页用户控件,方便在WinForm应用中对SQLite数据库的数据进行分页显示。下面将详细解释这个项目中的关键知识点...
SQLite 是一个轻量级的、开源的嵌入式关系型数据库,它被广泛应用于移动设备、桌面应用甚至服务器端的数据存储。在处理大量数据时,为了提高效率并避免一次性加载所有数据导致性能下降,通常会采用分页查询的方式来...
本篇文章将深入探讨如何利用C#创建一个名为`SQLiteDao`的辅助类来实现对SQLite数据库的操作。我们将讨论相关的类、方法以及如何使用它们来执行常见的数据库操作。 首先,`SQLiteDao`类是数据库操作的核心,通常包含...
**Qt编写的数据库分页demo**是一个用于展示如何在Qt应用程序中实现高效、用户友好的数据库数据分页功能的示例项目。这个demo的核心在于它能够处理大量的数据,如千万级记录,同时提供流畅的用户体验,包括上一页、...
Android上的SQLite数据库分页读取数据,实现并封装一个SQL分页表格控件,不仅支持分页还以表格的形式展示数据。主要功能包括: 1、创建数据库 2、插入示例数据 3、关闭数据库 4、分页显示数据 实现的SQL分页表格...
一个简单的基于Android的Sqlite数据库的操作封装,它有如下的好处:便捷地创建表和增添表字段灵活的数据类型处理通过操作对象来insert或者update表记录支持多种查询方式,支持多表自定义的复杂查询,支持分页查询支持...
SQLite数据库填充超级列表框是易语言编程中常见的数据可视化操作,它允许用户在界面上以列表形式查看数据库中的信息。 首先,我们要了解SQLite数据库。SQLite是一个嵌入式的、零配置的、支持事务的SQL数据库引擎。...
本文档介绍了C#操作SQLite数据库帮助类的实现和封装技巧,主要涉及到C#针对sqlite数据库的连接、查询、分页等各种常见操作。通过本文,读者可以了解如何使用C#语言来操作SQLite数据库,从而实现离线存储数据和查询...
适合初学者 知识点: 1、listView分页加载 2、利用SparseArray实现ViewHolder的缓存 3、java反射机制读取sqlite查询结果 4、sqlite数据库分页读取 5、文件拷贝操作
易语言Sqlite数据库类模块源码,Sqlite数据库类模块,初始化_SQLITE,销毁_SQLITE,添加纪录_批量,添加纪录,读取记录_单个字段_文本值,读取记录_多个字段,修改记录,删除记录,取记录集,填充记录们to超级列表框,分页_初始...
本知识点将详细探讨如何使用Java反射技术来封装Sqlite数据库,实现批量插入和分页查询,并且引入事务处理。 首先,我们需要创建一个Sqlite数据库的基类,这个类将包含与数据库交互的基本方法,如打开、关闭、创建表...
SQLite数据库是一种轻量级、无服务器、自包含的SQL数据库引擎,广泛应用于移动应用、嵌入式系统以及作为测试和开发环境中的数据存储解决方案。它无需独立的数据库服务器进程,可以直接在应用程序中进行操作,降低了...
首先,我们需要创建一个SQLite数据库。在Android中,这通常通过实现`SQLiteOpenHelper`类来完成。这个类允许我们创建和升级数据库,并提供了`onCreate()`和`onUpgrade()`两个关键方法。在`onCreate()`中,我们会定义...
本项目“SQLite数据库封装”专注于简化SQLite数据库在Android开发中的操作,通过Kotlin语言实现了高效、简洁的数据库访问接口。 首先,SQLite数据库在Android中的使用通常涉及以下步骤: 1. 创建数据库:通过继承`...
在Node.js环境中,SQLite3是一个常用的轻量级数据库,它不需要单独的服务进程,可以直接在内存中或磁盘上创建数据库文件。本篇文章将深入探讨如何使用`node-sqlite3`库来操作SQLite3数据库,并对其进行封装,以便于...
在移动应用开发中,SQLite数据库通常用于存储应用程序的数据,因为它轻量级、高效且本地化。本实例聚焦于SQLite数据库的拷贝、使用以及在应用中的实现,特别关注联想输入和滚动翻页功能。以下是对这些关键知识点的...