【问题标题】:Database query j2me including criterias数据库查询 j2me 包括标准
【发布时间】:2012-08-13 09:47:05
【问题描述】:

我正在使用 J2ME 创建一个应用程序。为了连接数据库,我使用RecordStore

所以要获得记录,我需要写如下:

public boolean SearchRecord(String Rec, int pos )
    {
        String [] data = getRecordData();

        Rec = Rec.substring(0,pos);
        for ( int i = 0 ; i < data.length ; i++ )
        {
            data[i] = data[i].substring(0, pos );
            if ( Rec.toString().trim().equals(data[i].toString().trim()) )
            {
                data = null; // System.gc();
                return true;
            }
        }

        data = null; // System.gc();
        return false;
    }

这是首先获取所有记录并遍历它以搜索记录。但是我有数千条记录,我只需要一些基于标准的记录,有什么办法可以解决这个问题吗?我不想遍历数千条记录得到十条记录。

我对 LWUIT 更好还是 JSR 更好实现的 UI 部分感到困惑?

【问题讨论】:

  • 为 UI 部分打开一个新问题。

标签: java database java-me criteria


【解决方案1】:

您在问题中所说的代码是我的answer 中的方法。大约一年前,我开发了这段代码,仅用于搜索目的。 RMS 的基础是平面文件的结构化版本。您不能在 RMS 上触发查询。没有用于从 RMS 搜索记录的内置方法。这也是我经过多次研发开发上述代码的原因。

【讨论】:

  • 我搜索了很多,并从您的回答中得到了答案。但问题是我的应用程序需要很长时间才能显示 10 条记录,因为它必须过滤 10000 条记录。
  • 同意,但您没有其他选择可以从平面文件类型的数据结构中进行搜索。
  • 我们可以使用数据库的 RMS 的任何其他选项吗?
  • 对于 J2ME,除了 RMS,我们别无选择。
【解决方案2】:

如果您经常调用SearchRecord,您可以将String [] data 设为一个属性。这将导致您的方法的版本更小:

public boolean SearchRecord(String rec, int pos )
{
    rec = rec.substring(0, pos).trim();
    for ( int i = 0 ; i < this.data.length ; i++ )
    {
        String comp = this.data[i].substring(0, pos);
        if ( rec.equals(comp.trim()) )
        {
            return true;
        }
    }

    return false;
}

【讨论】:

  • 我只是不想遍历所有记录。我只想从数据库中获取该记录
  • 您可以在调用 RecordStore.enumerateRecords 时使用 RecordFilter,但是,对于每次比较,您都必须从 byte[] 转换为 String。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-13
  • 1970-01-01
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
相关资源
最近更新 更多