如何从显示数据库记录的表格选中行取值?解决cursor取值报错
问题分析与解决
错误原因
- 变量作用域问题:
indexForName定义在try代码块内部,外部代码无法访问这个变量,导致编译报错。 - 调用对象错误:代码里用
row.getString(indexForName)是错的——row是行号(int类型),根本没有getString()方法,应该用Cursor对象cur来调用这个方法,这才是报“找不到符号”的核心原因。 - 多余的异常捕获:
getColumnIndex()不会抛出IOException,这段try-catch完全是多余的,没必要加。
修正后的代码
if(selectedRow > -1 && selectedRow == row) { // 获取Name字段的列索引,无需捕获IOException int indexForName = cur.getColumnIndex("Name"); // 先判断列是否存在,避免索引为-1引发异常 if(indexForName != -1) { // 用Cursor对象cur读取字段值,存入name变量供后续更新/删除使用 String name = cur.getString(indexForName); // 此处可添加基于name变量的更新、删除逻辑 } // 单元格样式设置保留 cell.getAllStyles().setBgColor(0xff0000); cell.getAllStyles().setBgTransparency(100); }
核心调整点
- 把
indexForName的定义移到try块外(直接删掉没用的try-catch),保证后续代码能正常访问它。 - 替换调用
getString()的对象为Cursor实例cur,这才是正确读取字段值的方式。 - 增加
indexForName != -1的判断,防止字段名写错或不存在时出现崩溃。
内容的提问来源于stack exchange,提问作者curtjacobs1
相关产品推荐
相关产品推荐

