Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android ormlite like() function is not working

I am new to this, please help me.

I am trying to use ormlite like(column name,value) function, but this is not working for me. But when I test full text it is working like "eq" function.

My Code is,

try {
    QueryBuilder<MakeDTO, Integer> qb = makeDao.queryBuilder();
    qb.where().like("madeCompany", filterKey);
    PreparedQuery<MakeDTO> pq = qb.prepare();
    return makeDao.query(pq);
} catch (SQLException e) {
    throw new AppException(e);
}

Thanks.

like image 822
user977625 Avatar asked Oct 04 '11 00:10

user977625


2 Answers

An old question, but something I just solved (ORMLite's documentation isn't that clear). you need to wrap your query parameter in "%"'s in order to tell ORMLite which side of your query string can match any number of characters.

For example, if you want your query to match any madeCompany that contains your string use the following:

try {
    QueryBuilder<MakeDTO, Integer> qb = makeDao.queryBuilder();
    qb.where().like("madeCompany", "%"+filterKey+"%");
    PreparedQuery<MakeDTO> pq = qb.prepare();
    return makeDao.query(pq);
} catch (SQLException e) {
    throw new AppException(e);
}
like image 176
Justin Pollard Avatar answered Oct 05 '22 02:10

Justin Pollard


Pretty simple, you're asking it to be exactly the string 'madeCompany', if you want to do partial matching you need to use the % wildcard etc.

public Where<T,ID> like(java.lang.String columnName,
                        java.lang.Object value)
                 throws java.sql.SQLException
Add a LIKE clause so the column must mach the value using '%' patterns.
Throws:
java.sql.SQLException

Where.like(java.lang.String, java.lang.Object)

like image 40
zeetoobiker Avatar answered Oct 05 '22 00:10

zeetoobiker