我的MainClass.java
int l = 0;
int p = 0;
ShopHandler sh = new ShopHandler(this);
int u = sh.getShopCount();
String[] Shops = new String[u];
String[] ShopsApproved = new String[u];
for (int i=0;i<u;i++)
{
Shops[i]=sh.getShop(i+1).getShop();
}
float[] prices = new float[u];
for(int i=0;i<u;i++)
{
Shop shop = sh.getShop(i+1);
ShopName = shop.getShop();
ProductHandler ph = new ProductHandler(this);
int o = ph.getProductsCount();
for(int j=0;j<o;j++)
{
Product prod = ph.getProduct(j+1); //Always null
String productname = prod.getName();
if(productname==SearchProduct)
{
ShopsApproved[++l]=ShopName;
prices[++p]=ph.getProduct(j+1).getPrice();
}
}
}
将我的ProductHandler.java
分开 // Getting single product
Product getProduct(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_PRODUCTS, new String[] { KEY_NAME,
KEY_AMOUNT, KEY_TYPE, KEY_PRICE }, KEY_NAME + "=?",
new String[] { String.valueOf(id) }, null, null, null, null);
Product product = null; //Start
if (cursor.moveToFirst()) {
product = new Product(cursor.getString(0), Float.parseFloat(cursor.getString(1)),
Integer.parseInt(cursor.getString(2)), Float.parseFloat(cursor.getString(3)));
}
cursor.close();
return product; //end
}
那么问题是什么?当您查找时,您将看到标记为注释的代码。它总是返回null到MainClass中也标记的代码。如果您知道问题所在,请将其写入答案。 产品数据库:
Name Amount Type Price
Cheese 1.0 1 5.34
Milk 1.0 2 3.67
Cola 2.0 2 7.05
答案 0 :(得分:1)
人们只能在不知道实际表格及其数据的情况下进行推测。但最有可能的是,查询没有返回任何记录,导致cursor.moveToFirst()
始终返回false。
答案 1 :(得分:1)
很可能你的光标返回null结果是因为你在查询中寻找一个名字,但是传递一个ID:
KEY_NAME + "=?",
new String[] { String.valueOf(id) },
您的数据是否包含“_id”列或索引?