sqlite-SQLite读取全部数据

问题描述

SQLite读取全部数据

table中一共有11条记录,每个记录有三个内容"name","address","city"。现在要获取这些记录,但是我写的代码只能显示出一条记录,不知道怎么实现显示全部记录?

public void readData(View v)
    {
        DatabaseClass mydb = new DatabaseClass(this);
        SQLiteDatabase readdata = mydb.getReadableDatabase();
        TextView tv = (TextView)findViewById(R.id.readtext);
        Cursor c = readdata.rawQuery("select * from mylistdata", null);
        int[] elementId = {R.id.textView1, R.id.textView2, R.id.textView3};
        if(c !=null)
        {
            c.moveToFirst();
            while(c.isAfterLast() == false)
            {
                listData = new ArrayList<GenericListItem>();
                String name = c.getString(c.getColumnIndex(DatabaseClass.NAME));
                String address = c.getString(c.getColumnIndex(DatabaseClass.ADDRESS));
                String city = c.getString(c.getColumnIndex(DatabaseClass.CITY));
                listData.add(new GenericListItem(new String[]{name,address,city}));
                listAdapter = new GenericListAdapter(getApplicationContext(), R.layout.list_layout, listData, elementId);
                result.setAdapter(listAdapter);
                c.moveToNext();
            }

        }

解决方案

要把Adapter放到循环前初始化,然后最后再加载(调用setAdapter()),否则每次都对ListView设置了一个新的Adapter,当然只能看到最后一次设置的值了

解决方案二:

在while循环外面初始化listData ArrayList:

    c.moveToFirst();
    listData = new ArrayList<GenericListItem>();
    while(c.isAfterLast() == false)
    {
       // add value here to listData
      c.moveToNext();
    }
   // set  listData datasource to GenericListAdapter here

   listAdapter = new GenericListAdapter(getApplicationContext(),
              R.layout.list_layout, listData, elementId);

   result.setAdapter(listAdapter);

解决方案三:

listData = new ArrayList<GenericListItem>();  //moved out of loop

 while(c.isAfterLast() == false)
        {
            String name = c.getString(c.getColumnIndex(DatabaseClass.NAME));
            String address = c.getString(c.getColumnIndex(DatabaseClass.ADDRESS));
            String city = c.getString(c.getColumnIndex(DatabaseClass.CITY));
            listData.add(new GenericListItem(new String[]{name,address,city}));
            listAdapter = new GenericListAdapter(getApplicationContext(), R.layout.list_layout, listData, elementId);
            c.moveToNext();
        }

        result.setAdapter(listAdapter);  // moved out of loop

我认为是循环的问题,你这样写看看

时间: 2024-10-01 21:04:10

sqlite-SQLite读取全部数据的相关文章

asp.net 如何读取客户端电脑中SQLITE表中的数据

问题描述 如题:如何读取客户端电脑中SQLITE表中的数据 解决方案 解决方案二:做不到吧,你数据库的账号密码都不知道首先解决方案三:我本地机器SQLITE是统一开发的单机程序解决方案四:首先要知道你要取得数据的ip地址,数据库名称,用户名,密码,然后建立数据连接,就可以得到数据了.解决方案五:这个用VB程序写在excel里比较好解决方案六:sqlite,一般都是作为单机版的数据库使用网络环境使用,建议改用其他数据,比如mssql.oracle.mysql等等

Android提高之SQLite分页读取实现方法_Android

一般来说,Android自身就包含了常用于嵌入式系统的SQLite,这样就免去了开发者自己移植安装的功夫.SQLite 支持多数SQL92标准,很多常用的SQL命令都能在SQLite上面使用,除此之外Android还提供了一系列自定义的方法去简化对SQLite数据库的操作.不过有跨平台需求的程序还是建议使用标准的SQL语句,毕竟这样容易在多个平台之间进行移植. 先来贴出本文程序运行的结果图: 本文实例程序主要讲解了SQLite的基本用法,如:创建数据库,使用SQL命令查询数据表.插入数据,关闭数

sqlite-Android如何将SQLite数据库中的数据导出为csv格式的文件

问题描述 Android如何将SQLite数据库中的数据导出为csv格式的文件 搜到了下边这个方法,但是我没实现功能,请各位指教.最好能有代码 public void ExportToCSV(Cursor c, String fileName) { int rowCount = 0; int colCount = 0; FileWriter fw; BufferedWriter bfw; File sdCardDir = Environment.getExternalStorageDirecto

sqlite-查询删除SQlite中重复的数据

问题描述 查询删除SQlite中重复的数据 在SQLite中通过查询提取指定用户的数据: Cursor c = db.query(true TABLE COLUMN USER + ""= '"" + user + ""'"" null null null null null); 表单的格式: |group-----ID||------------||one-------me||one------you||two-------m

database-从 SQLite 数据库中删除数据

问题描述 从 SQLite 数据库中删除数据 我在程序中创建了一个 SQLite Android dB.我可以添加 info 到 dB 中,但是不能删除 dB 中的任何数据. final SQLManager hon = new SQLManager(this); b.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated meth

如何从sqlite数据库中获取数据并显示在listview中?

问题描述 如何从sqlite数据库中获取数据并显示在listview中? 在登录页面后,我想在listview中把Apple显示成A,Boy显示成B等等,直到F.但是在程序中当我完全登录后,只有登录表成功创建,主菜单还是没有创建. 我想在test database中创建主菜单,然后我想从主菜单表(mainmenu table)中获取数据再显示在listview中. 我使用了下面的代码: if(username.length()>0&&password.length()>0) {

java sqlite quartz-java如何使用sqlite数据库实现quartz数据持久化

问题描述 java如何使用sqlite数据库实现quartz数据持久化 如题.java如何使用sqlite数据库实现quartz数据持久化. 解决方案 http://www.linuxidc.com/Linux/2014-08/105947.htm

C#简单查询SQLite数据库是否存在数据的方法_C#教程

本文实例讲述了C#简单查询SQLite数据库是否存在数据的方法.分享给大家供大家参考,具体如下: //sqlite数据库驱动组件 using System.Data.SQLite; //插入数据库函数 int SQLquery(string sql) { try { //打开数据库 SQLiteConnection conn = new SQLiteConnection(); SQLiteConnectionStringBuilder connstr = new SQLiteConnection

安卓游戏-安卓开发用sqlite存的游戏数据,游戏卸载后还在吗?

问题描述 安卓开发用sqlite存的游戏数据,游戏卸载后还在吗? 如题,安卓游戏用sqlite存的游戏数据,游戏卸载后sqlite存的数据信息还在吗? 解决方案 android数据存储存放的地方分两种,一种是private,会随着程序的卸载而丢失.另一种是public,共享内容是不会被丢失.而游戏数据应该会保存的服务器端,重新安装的时候会重新保存一遍.当然做法不一样,结果就不一样. 解决方案二: 看你的文件在哪了,如果是随着安装包存在的,就会清理掉,如果是自己拷贝到其他地方的,就没事 解决方案三

Sqlite数据库里插入数据的条数上限是500_SQLite

今天在向Sqlite数据库里插入数据的时候,报了这样一个错: 复制代码 代码如下: "too many terms in compound SELECT" 去Stackoverflow上查了一下,发现有人回答这个问题:链接 原来一次性向数据库里插入数据的条数不能太多,上限是500条.超出会报错. 解决方案就是只好分多次插入数据库了.