DBFlow查询问题

ssuper41 2018-11-12 03:31:35
数据库里path字段对应以下数据:
1: “/storage/emulated/0/AJonnyCool-风一样的勇士DNF.mp3”
2: “/storage/emulated/0/Emily Bindiger - my long forgotten cloistered sleep (unreleased work of Xenosaga).mp3”
3: “/storage/emulated/0/ENE -123.mp3”
3: “/storage/emulated/0/ENE -456.mp3”

这是歌曲的路径path。
Path的组成由 “设备路径 +“/”+歌曲名 ”.
比如 “/storage/emulated/0/ENE -456.mp3” = “/storage/emulated/0” +“/”+“ENE -456.mp3”

我想根据歌曲名来搜索列表。

String keyWord; //输入的歌曲名。
mList = SQLite.select().from(MediaItem.class)
.where(MediaItem_Table.path.like("%"+keyWord+"%"))
.and(MediaItem_Table.path.notLike("%"+keyWord+"%/%"))

因为歌曲名总是在最后一个“/”后面,所以写成了这样可以完成查询。
我想问一下有没有能直接对MediaItem_Table.path进行判断的语法。

//比如新建一个工具方法
/**
* 输入 “/storage/emulated/0/WNA/心中的日月.mp3”
* 输出 “心中的日月.mp3”
* @param path
* @return
*/
public static String getNearPath(String path){
if(path.lastIndexOf("/")==-1){
return "";
}else {
String s = path.substring(path.lastIndexOf("/") + 1);
return s;
}
}
//接着直接对MediaItem_Table.path进行处理
mList = SQLite.select().from(MediaItem.class)
.where(getNearPath(MediaItem_Table.path));


这样写语法并不正确,我想这样能比较好的表达下我的问题。我想问下DBFlow想实现这样的查询语法该怎么写呢
...全文
81 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssuper41 2018-11-14
  • 打赏
  • 举报
回复
引用 1 楼 jklwan 的回复:
在系统的数据库中,文件有路径和文件名两个列,如果要查名称可以用like查文件名那一列,你自己设计也最好设计成这样,加个fileName之类的列,因为like暂时无法支持你想要的这种方式。 你写的like和notlike是有问题的,例如 .../music/music.mp3,用你写的搜music就无法查出来。
----------------- 确实有这样的问题:“例如 .../music/music.mp3,用你写的搜music就无法查出来”,感谢感谢。 现在按你说的加多一个fileName的列解决了。一开始是想DBFlow语法有没有直接对全路径进行处理的好方法,因为DbFlow的语法不太熟。所以想确认一下。
jklwan 2018-11-12
  • 打赏
  • 举报
回复
在系统的数据库中,文件有路径和文件名两个列,如果要查名称可以用like查文件名那一列,你自己设计也最好设计成这样,加个fileName之类的列,因为like暂时无法支持你想要的这种方式。 你写的like和notlike是有问题的,例如 .../music/music.mp3,用你写的搜music就无法查出来。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧