我无法找到适合自己问题的标题。这是问题......在syso
中getData()
语句之后,它应该使用cMainTable
中的语句打印游标中的值displayDataForMainTable()
。但是,事实并非如此。没有例外和错误。我还保留了LogCat中的输出。有人可以帮我,为什么第一次打印后没有输出。
try {
pm = new PortfolioManager(this);
cMainTable = pm.getData("mainTable");
if (cMainTable.equals(null)) {
System.out.println("Null is returned");
}
displayDataForMainTable(cMainTable);
}
catch (Exception e) {
System.out.println("problem at Oncreate Method");
}
getData()
方法:
public Cursor getData(String string) {
System.out.println("Getting Data for Table " + string);
c = sqlDB.rawQuery("select * from " + string, null);
return c;
}
displayDataForMainTable()
方法:
private void displayDataForMainTable(Cursor c2) {
try {
if (c2 != null) {
if (c2.getCount() > 0) {
c2.moveToFirst();
do {
String SNo = c2.getString(c2.getColumnIndex("scriptnumber"));
String SName = c2.getString(c2.getColumnIndex("scriptname"));
int quant = Integer.parseInt(c2.getString(c2.getColumnIndex("totalquantity")));
double avg = Double.parseDouble(c2.getString(c2.getColumnIndex("averageprice")));
double cur = Double.parseDouble(c2.getString(c2.getColumnIndex("currentprice")));
double log = Double.parseDouble(c2.getString(c2.getColumnIndex("lossorgain")));
System.out.println("Inserted Values are ::: " + SNo
+ " " + SName + " " + String.valueOf(quant)
+ " " + String.valueOf(avg) + " "
+ String.valueOf(cur) + " "
+ String.valueOf(log));
} while (c2.moveToNext());
}
}
else {
System.out.println("Cursor c2 is Empty");
}
} catch (Exception e) {
System.out.println("Exception in displayDataForMainTable");
}
}
输出
01-18 11:02:27.523: D/dalvikvm(468): GC_EXTERNAL_ALLOC freed 47K, 53% free 2567K/5379K, external 2090K/2137K, paused 45ms
01-18 11:02:33.983: I/System.out(468): Getting Data for Table mainTable
01-18 11:02:36.584: W/KeyCharacterMap(468): No keyboard for id 0
01-18 11:02:36.584: W/KeyCharacterMap(468): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
编辑1 :::
我按照Nasser的建议修改了getData()
,但输出保持不变..
public Cursor getData(String string) {
System.out.println("Getting Data for Table "+string);
String table = string;
sqlDB = getReadableDatabase();
c = sqlDB.query(table, null, null, null, null, null, null);
//c = sqlDB.rawQuery("select * from "+string, null);
return c;
}
在我阅读时,将null
传递给列(第二个参数)将返回所有行。如果这是正确的,那么结果是一样的。
答案 0 :(得分:0)
我认为你不应该从db返回游标而不是在它的对象中创建一个setterGetter类设置数据并返回该对象的数组..
这里的代码是相同的......试试..
还将日志放在那里,以便您了解正在发生的事情......
public ArrayList<ContactSetterGetter> getAllNumbers() {
ArrayList<ContactSetterGetter> setterList = new ArrayList<ContactSetterGetter>();
db = getWritableDatabase();
Cursor c = db.query(C_TABLE_NAME, new String[] {"contact_number"},null, null, null, null, null);
if (c.getCount() != 0) {
c.moveToFirst();
do {
ContactSetterGetter setter = new ContactSetterGetter();
setter.setContactNumber(c.getString(0));
setterList.add(setter);
} while (c.moveToNext());
}else{
c.close();
db.close();
return setterList;
}
c.close();
db.close();
return setterList;
}
答案 1 :(得分:0)
似乎Eclipse已经向我展示了怜悯并且正在显示输出。争取4个多小时更改代码,冲浪,最后没有更改代码。
无论你作为一名程序员有多聪明,IDE都会让你觉得自己是新手。