如何编写包含“Like”的搜索方法比如J2ME中的SQL
现在我尝试编写一个在j2me中搜索的小方法,它运行良好,但我不知道如何编写像SQL使用“Like”在j2me中搜索记录存储的方法不需要100%匹配。
示例
在我的 RecordStore 中有 2 条记录
London; Paris; Atlanta;
Paramount; NewYork; Bronx;
当我在 TextField 上输入字母“o”时,它只显示最后一条记录
派拉蒙;纽约;布朗克斯
虽然第一条记录也有“London”
但我从 Java2s dot com 学会了如何编写搜索方法
http://www.java2s.com/Tutorial/Java/0430__J2ME/SearchrecordinRecordStore.htm
如何在J2me中使用“喜欢”?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
(扩展问题评论中讨论的内容)
关于您的一般问题 - 答案是否定的,MIDP 2 API 没有任何类似 SQL LIKE。根据 RecordStore API,不能使用 SQL 表达式/语句。
在 MIDP RecordStore 中搜索不精确匹配的方法(类似于 SQL
LIKE
)是使用正则表达式处理记录。请注意,正则表达式在 MIDP 2 API 中也不可用。要在 MIDP 中使用正则表达式,必须为这些编写自己的代码,或者更好的是,获取一些可以执行此操作的库,例如 "regexp-me"开源包:
至于您提到的示例 SearchrecordinRecordStore.htm ,看起来如果您正确移植它那么你应该得到“伦敦”。
RecordFilter
通过包含“o”(不区分大小写)的字符串,并且如果您使用该过滤器枚举记录,则枚举中应该包含“London”。检查您在执行输出时是否以某种方式错过了“伦敦”(顺便说一句,原始示例似乎旨在显示单个结果)。如果您使用模拟器,请考虑使用 System.out.println - 这样您不仅可以使用 MIDlet UI 重新检查输出,还可以在模拟器控制台中重新检查输出。
(expanding on what was discussed in question comments)
Regarding your general question - the answer is no, MIDP 2 API has nothing like SQL LIKE. SQL expressions/statements cannot be used according to RecordStore API.
The way to to search MIDP RecordStore for inexact match (similar to SQL
LIKE
) is to process the records using regular expressions. Note that regular expressions, in turn, are also not available in MIDP 2 API.To use regular expressions in MIDP, one would have to write own code for these, or better yet, get some library that does that, eg "regexp-me" open source package:
As for the example SearchrecordinRecordStore.htm you mention, it looks like if you correctly ported it then you should get "London".
RecordFilter
passes at strings containing "o" (case insensitive) and if you enumerated records using that filter then "London" should be there in the enumeration.Check if you somehow missed "London" when doing the output (btw original example seem to be targeted at displaying a single result). If you use emulator, consider using
System.out.println
- that way you could re-check the output not only with MIDlet UI but in emulator console.