为了账号安全,请及时绑定邮箱和手机立即绑定

关于循环查询语句里面一个问题

一开始不是用Cursor的时候,是每次输出getInt,getSting不同类型。

为什么现在用Cursor 然后遍历循环的时候可以直接只输出getString,里面的_id和age不是integer类型的吗?

正在回答

5 回答

通过查getString()方法,我发现此方法接收一个int类型参数,输入String,getInt()接收int,输出int,但我的目的都是要String,所以不如全都用getString()方法了。

0 回复 有任何疑惑可以回复我~
#1

慕粉18817939419 提问者

获取的int类型是列的索引吧,数据里面,_id和age不是都是int类型吗,为什么要string类型输出,还不会报错
2016-10-13 回复 有任何疑惑可以回复我~
#2

被窝别走 回复 慕粉18817939419 提问者

不报错是因为getString()的参数是int。为什么要String类型输出,是因为我们要打印Log信息。
2016-10-13 回复 有任何疑惑可以回复我~
#3

慕粉18817939419 提问者

非常感谢!
2016-10-14 回复 有任何疑惑可以回复我~

Sql 会转换的。

0 回复 有任何疑惑可以回复我~

你运行时两种方法都能通过吗?你查一下数据库看一下数据时什么类型的

0 回复 有任何疑惑可以回复我~
#1

慕粉18817939419 提问者

就是老师写的样子,可以通过输出结果
2016-10-13 回复 有任何疑惑可以回复我~
Cursor c=db.rawQuery("select * from usertb", null);
		if(c!=null){
			while(c.moveToNext()){
			Log.i("info", "_id:"+c.getInt(c.getColumnIndex("_id")));
			Log.i("info", "name:"+c.getString(c.getColumnIndex("name")));
			Log.i("info", "sex:"+c.getString(c.getColumnIndex("sex")));
			Log.i("info", "age:"+c.getInt(c.getColumnIndex("age")));
			Log.i("info", "!!!!!!!!!!!!!!!!!!!");
			}
			c.close();
		}
		db.close();

这是一开始老师的写法

Cursor c=db.rawQuery("select * from stutb", null);
		if(c!=null){
			String []cols=c.getColumnNames();
			while(c.moveToNext()){
				for (String ColumnName : cols) {
					Log.i("info", ColumnName+":"+c.getString(c.getColumnIndex(ColumnName)));
				}
				
			}
			c.close();
		}
		db.close();

这是老师后来的写法,为啥后面这种不用区分int和string?

0 回复 有任何疑惑可以回复我~

源代码

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android攻城狮的第二门课(第3季)
  • 参与学习       74912    人
  • 解答问题       420    个

手势识别、数据存储和4大组件,让你牢牢掌握之前的基础知识点

进入课程

关于循环查询语句里面一个问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信