`
ET焖猪仔
  • 浏览: 236251 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类
最新评论

Cursor上用法的注意事项

阅读更多
注意要判断Cursor返回的记录是否为空~~  之前给这个问题卡了很久~ 囧
public SimpleAdapter getlistItem(Cursor c){
    	
    	ArrayList<HashMap<String,Object>> listItem = new ArrayList<HashMap<String,Object>>();
    	if (c.getCount()==0)  //一定要加这个判断条件~,否则出现cursor越界
    		return null;
    	c.moveToFirst();
    	do
    	{
    		int index;
    		HashMap<String, Object> map = new HashMap<String, Object>();   		
    		index = c.getColumnIndex(Todolist.TITLE);
    		map.put(Todolist.TITLE, c.getString(index));
    		index = c.getColumnIndex(Todolist.BEGIN_TIME);
    		map.put(Todolist.BEGIN_TIME,convertTime(c.getLong(index)));
    		index = c.getColumnIndex(Todolist.STATUS);
    		map.put(Todolist.STATUS, drawble[c.getInt(index)]);
    		listItem.add(map);
    	}
    	while (c.moveToNext());	
    	
    	adapter = new SimpleAdapter(this, listItem, R.layout.list_item,
    			new String[]{Todolist.TITLE,Todolist.BEGIN_TIME,Todolist.STATUS},
    			new int[]{R.id.TextView01,R.id.TextView02,R.id.ImageView01});
    	return adapter;
    }

还有就是查询设定某些条件返回的cursor,不能直接就获取返回记录的的值,要先moveToFirst()
例如:
PersonActivity.gategory = PersonActivity.dc.query(CategoryList.projection,"_id="+tag, null, null);
		/*
		 * 记得移动光标,因为刚开得到的cursor没有指向任何记录位置的~  惨痛的教训!
		 */
		PersonActivity.gategory.moveToFirst();
		showtype.setText("类型:"+PersonActivity.gategory.getString(1));


还有Cursor的requery()和deactivate()两个方法的用途
分享到:
评论
1 楼 mapeijie888 2011-03-01  
public  List<SendMessage> getSendMsg(){
    List<SendMessage> msgList = new ArrayList<SendMessage>();
    try{
    open();
   
    Cursor cur = dbConn.query(true, NETWORK_TABLE, new String[] { _ID , DOWN_SIZE ,
    TIME_LONG , ADDRESS}, IS_SEND + " = 1" , null, null, null, null, null);
    if(null != cur && cur.getCount() > 0){
    SendMessage sendMsg = new SendMessage();
    cur.moveToFirst();
    while(cur.isAfterLast()){
    sendMsg.setId(cur.getString(cur.getColumnIndexOrThrow(_ID)));
    sendMsg.setDownSize(cur.getString(cur.getColumnIndexOrThrow(DOWN_SIZE)));
    sendMsg.setTimeLong(cur.getString(cur.getColumnIndexOrThrow(TIME_LONG)));
    sendMsg.setAddress(cur.getString(cur.getColumnIndexOrThrow(ADDRESS)));
    msgList.add(sendMsg);
    cur.moveToNext();
    }
   
//    do{
//    sendMsg.setId(cur.getString(cur.getColumnIndexOrThrow(_ID)));
//    sendMsg.setDownSize(cur.getString(cur.getColumnIndexOrThrow(DOWN_SIZE)));
//    sendMsg.setTimeLong(cur.getString(cur.getColumnIndexOrThrow(TIME_LONG)));
//    sendMsg.setAddress(cur.getString(cur.getColumnIndexOrThrow(ADDRESS)));
//    msgList.add(sendMsg);
//    }while(cur.moveToNext());
   
    }
    close();
    }catch(Exception e){
   
    }
    return msgList;
    }

相关推荐

    Android cursor的用法

    ### 五、注意事项 1. **资源管理**:使用完 Cursor 后一定要记得关闭它,避免内存泄漏。 2. **异常处理**:在处理数据时要注意捕获可能发生的异常,如 NullPointerException 或 IndexOutOfBoundsException 等。 3. ...

    Oracle数据库中的Cursor介绍

    尽管游标提供了强大的功能,但在实际应用中也存在一些使用限制和注意事项: 1. **性能问题**: - 创建游标时,应首先考虑是否有替代方案可以避免使用游标,因为游标可能会降低程序的整体性能。 - 如果游标操作的...

    cursor_control

    `Readme.txt` 文件通常是项目的一部分,用来提供有关项目的基本信息、安装指南、使用注意事项或者开发者想要传达的重要信息。在这个场景中,它可能会解释如何运行光标控制的示例,或者提供关于代码的详细说明。 `...

    jQuery中animate的几种用法与注意事项

    在本文中,我们将深入探讨`animate()`的多种用法以及一些需要注意的事项。 ### 一、animate()的语法结构 `animate()`方法的基本语法如下: ```javascript $(selector).animate(params, duration, callback) ``` ...

    div+css兼容所有浏览器的一些注意事项

    以下是一些关于如何让`div+css`在所有浏览器中保持一致性的关键注意事项: 1. **DOCTYPE声明**:DOCTYPE会影响CSS的解析方式。在HTML文档开头正确声明DOCTYPE,如`&lt;!DOCTYPE html&gt;`,有助于确保浏览器以标准模式...

    mybatis-cursor:mybatis光标问题(https

    **注意事项** - 使用`Cursor`时,确保数据库连接和事务保持开启状态,直到遍历完所有数据或手动关闭`Cursor`。 - `Cursor`在遍历过程中如果遇到异常,会自动关闭,因此需要捕获并处理异常。 - 如果业务场景需要高效...

    oracle-cursor.rar_oracle

    Oracle游标是数据库管理系统中一个重要的概念,它在处理复杂SQL操作时扮演着核心角色。游标允许我们按行处理查询结果集,而非一次性加载...通过熟练掌握游标的用法和注意事项,可以更好地管理和处理数据库中的数据。

    DB2 中游标的使用

    本文将深入探讨DB2中游标的使用方法及其注意事项。 #### 二、什么是游标 游标可以理解为指向查询结果集中某一行的一个指针。通过使用游标,我们可以逐行地访问查询结果,并对其进行相应的处理。与传统的SQL查询...

    SQLite适配器使用

    通过查看和运行这个项目,你可以深入理解SQLite适配器的使用方法。 总结,SQLite适配器是连接SQLite数据库和UI界面的重要桥梁,它使得开发者能够方便地将数据库查询结果展现给用户。了解并熟练掌握...

    python executemany的使用及注意事项

    下面将详细介绍 `executemany` 的使用方法以及在实际应用中需要注意的关键点。 #### 一、`executemany` 方法概述 `executemany` 是Python中的`Cursor`对象提供的一个方法,用于执行SQL语句(特别是INSERT和UPDATE...

    Oracle游标的使用方法.pdf

    6. **注意事项** - 游标应在不再需要时关闭,以释放系统资源。 - 提取后的行必须在下一次提取之前处理,否则可能会丢失数据。 - 在使用游标时,确保正确声明和初始化PL/SQL变量,以匹配查询返回的列类型。 总之...

    AndroidCallLog获取通话记录

    6. **注意事项** - 不同Android版本可能需要处理权限请求的不同方式,例如对于Android 6.0及以上版本,需要在运行时动态请求权限。 - 为了提高性能,避免一次性加载大量数据,可以使用CursorLoader或LiveData与...

    Python数据库的连接实现方法与注意事项

    ### Python数据库连接实现方法与注意事项 #### 一、前言 在进行Python开发时,数据库操作是一项非常重要的技能。无论是Web应用开发还是数据分析处理,掌握如何有效地与数据库进行交互至关重要。本文将详细介绍如何...

    BDC资料 数据导入工具_BDC使用方法

    【BDC资料 数据导入工具_BDC使用方法】 BDC(Batch Input Communication)是SAP系统中用于批量数据导入的关键技术,也称为批输入。它允许用户高效地输入大量数据到SAP系统,尤其适用于需要频繁处理大批量业务数据的...

    SimpleCursorAdapter 数据库查询显示

    7. **注意事项** - 要确保Cursor在使用完毕后关闭,以释放资源。 - 如果Cursor数据发生变化,例如添加、删除或更新记录,记得调用`Cursor.requery()`或者使用`CursorLoader`配合`LoaderManager`来自动刷新ListView...

    CursorAdapter demo

    8. **注意事项** - 在使用完 Cursor 后,记得关闭它,以释放数据库资源。 - 确保在适当的时候调用 `startManagingCursor()` 和 `stopManagingCursor()`,以管理 Cursor 的生命周期。 通过这个 "CursorAdapter ...

    让div+css兼容所有浏览器的一些注意事项

    以上这些方法和注意事项,都是为了在不同的浏览器环境下达到尽可能一致的视觉效果,提高Web前端开发的兼容性和效率。开发者在实践中应该根据具体情况灵活运用这些策略,并不断更新知识以适应浏览器的更新和变化。

    oracle的游标使用

    ### Oracle的游标使用详解 #### 一、游标概念介绍 在Oracle数据库中,游标(Cursor)是一种用于检索并处理多行数据的强大工具。...熟练掌握游标的使用方法,能够极大地提高开发效率并优化应用程序性能。

    android 获取短信和通话记录信息

    三、注意事项与最佳实践 1. 性能优化:避免在主线程上执行数据库查询,使用异步任务或Loader。 2. 用户隐私:尊重用户隐私,明确告知用户为何需要访问这些数据,并在必要时请求权限。 3. API兼容性:确保代码适配...

Global site tag (gtag.js) - Google Analytics