BlackBerry OS 6中的Sqlite游标中断

时间:2012-08-13 07:38:14

标签: sqlite blackberry java-me

我有一个在BlackBerry OS 7.0下运行良好的应用程序,但是当我在BlackBerry OS 6.0下运行相同的应用程序时,SqLite游标立即到达数据的末尾,因此我无法从数据库中获取任何数据。

 public static Vector GetProducts(String sysID) {
  Bitmap img = null;
  try {
   Statement st = d
     .createStatement("SELECT * FROM Product where systemSerID=?");
   st.prepare();
   st.bind(1, sysID);
   st.execute();
   Cursor c = st.getCursor();

   Products products;
   Vector pro = new Vector();

   while (c.next()) {

    Row r = c.getRow();
    products = new Products();
    products.setSystemServiceID(r.getString(1));
    products.setSystemServiceName(r.getString(2));
    products.setProductID(r.getString(3));
    products.setProductName(r.getString(4));
    products.setProductDesc(r.getString(5));

    products.setProductType(r.getString(devil));
    // products[i].setProductType("1");
    products.setBatchID(r.getString(7));
    products.setMinValue(r.getString(music));
    products.setMaxValue(r.getString(9));
    products.setImageURL(r.getString(10));

    System.out.println(" retrived from database.");
    pro.addElement(products);
   }

   c.close();
   st.close();
   return pro;

  } catch (DatabaseException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   return null;

  } catch (DataTypeException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   return null;
  }

 }

1 个答案:

答案 0 :(得分:3)

documentation for Database说:

  

如果Statement可能返回结果,请通过调用Statement.getCursor()运行Statement。   Statement.execute() - 当您想要明确准备和关闭Statement时使用。

由于您要访问结果集,因此不应调用Statement.execute()。 getCursor()导致查询执行,因此您应该能够删除execute()调用以获得所需的行为。