2012-07-05 54 views
0

我在android应用程序中工作,我想在我的应用程序本地Db中工作获取详细信息。我正在使用的查询有内连接,所以它不返回values.But在同一个方法中,如果我用没有内连接的查询使用它,它将返回值。 请帮我在SQl lite中做内部加入

public boolean isAvailableTransitionFile(String MenuName) { 

    String query = "select * from Transition_File_Table inner join item_sync on Transition_File_Table.Menuitem_id=item_sync.id where item_sync.itemName=?"; 
    Cursor cursor = this.db.rawQuery(query, 
      new String[] { String.valueOf(MenuName) }); 
    Log.e("Count", cursor.getCount() + ""); 
    if (cursor.moveToFirst()) { 
     return true; 
    } else { 
     return false; 
    } 
} 
+0

阿伦:首先尝试在sqlitemanager.Try来执行查询纠正的SQLiteManager查询问题,然后尝试在android中插入查询。 – karthik 2012-07-05 11:59:27

回答

0

SQL问题通常是由于SQL错误语法的运用,始终测试他们你在程序中使用它们。我发现了一个类似的帖子在这里:

How do I join two SQLite tables in my Android application?

你应该试试这个代码:

String query = "select * from Transition_File_Table TF inner join item_sync IS on 
TF.Menuitem_id=IS.id where IS.itemName=?"; 

Cursor cursor = this.db.rawQuery(query,new String[]{String.valueOf(MenuName)}); 
0

我建议你不要使用rawQuery。你会找到有用的替代方法来执行你的工作。检查android的记事本示例是一个好主意。

0

望着查询

select * 
from Transition_File_Table 
inner join item_sync 
    on Transition_File_Table.Menuitem_id=item_sync.id 
where item_sync.itemName=? 

此加入行从Transition_File_Table到item_sync的行,其中Transition_File_Table的Menuitem_id列在表item_sync的id列匹配。

如果连接没有返回任何结果,这意味着n行可以通过连接,这意味着没有item_sync id具有与Transition_File_Table的Menuitem_id列中的值相匹配的值。

1

改变你的选择查询为:

String query = "SELECT * FROM Transition_File_Table 
a INNER JOIN Transition_File_Table b 
ON a.Menuitem_id=b.id WHERE b.itemName=?";