我目前正在开发一个Android项目,并坚持使用此方法。游标查询有效,但之后的任何内容都不起作用。如果我拿出退货公司'它运行的方法所以我猜测错误是在游标查询中。该方法采用名为'companyNameParemeter'
的字符串参数。仅供参考的Android Studio是我正在使用的文本编辑器。
SQLiteDatabase db = this.getReadableDatabase();
String returnString = "";
Cursor cursor = db.rawQuery("Select * from " + CONTANT_INFO_AND_GPS_TABLE + " where " +
KEY_COMPANY_NAME + " = ? ", new String[] {companyNameParamater});
company returnCompany = new company(Integer.parseInt(cursor.getString(0)), cursor.getString(1),
cursor.getString(2), cursor.getString(3),Double.parseDouble(cursor.getString(4) ),
Double.parseDouble(cursor.getString(5)));
/* returnString = ("Company is:\t" + returnCompany.getCompanyName() + ",\nContact name:\t" +
returnCompany.getContactName() + ",\tContact No:\t" + returnCompany.getContactNumber()
+ ",\nGPS:\tLat:\t"
+ returnCompany.getGPS_Latitude() + "\tLong:\t" + returnCompany.getGPS_Longitude() );*/
return returnString;
我检查了LogCat,我能找到的唯一相关错误就是这个
04-04 12:06:38.237 2032-1714/? E/GCoreUlr: Received null location result
答案 0 :(得分:2)
尝试使用
cursor.moveToFirst()
右后用db.rawquery创建和填充它,或者用来从数据库中获取数据的调用,
它会确保你的光标指向你收到的第一个元素,我可能错了,但我记得它总是指向你填充它时包含的数据的末尾。
答案 1 :(得分:0)
您显示的错误并不反映您通常会得到的错误。但是,您显示的代码显然是错误的并且会导致错误,因为当您位于光标的起始位置(也就是beforeFirstRow)时,您正尝试读取一行。
您必须先移动到一行才能获取数据。由于您似乎只有一行,因此使用Cursor方法moveToFirst
将您定位在第一行(唯一)。如果不能进行移动(没有行)那么就像所有Cursor一样移动?????方法(moveTolast
,moveToNext
等)返回一个布尔值false(如果移动的话,则返回true)因此它在if
中使用。
SQLiteDatabase db = this.getReadableDatabase();
String returnString = "";
Cursor cursor = db.rawQuery("Select * from " + CONTANT_INFO_AND_GPS_TABLE + " where " + KEY_COMPANY_NAME + " = ? ", new String[] {companyNameParamater});
if (cursor.moveToFirst()) { //<<<< Move the cursor to a row
company returnCompany = new company(Integer.parseInt(cursor.getString(0)),
cursor.getString(1),
cursor.getString(2),
cursor.getString(3),
Double.parseDouble(cursor.getString(4)),
Double.parseDouble(cursor.getString(5)));
/* returnString = ("Company is:\t" + returnCompany.getCompanyName() + ",\nContact name:\t" +
returnCompany.getContactName() + ",\tContact No:\t" +
returnCompany.getContactNumber()
+ ",\nGPS:\tLat:\t"
+ returnCompany.getGPS_Latitude() + "\tLong:\t" +
returnCompany.getGPS_Longitude() );
*/
}
return returnString;
P.S。 Double.parseDouble(cursor.getString(4))
可以是cursor.getDouble(4)