我的要求是列表中的表列表,当循环列表需要从映射表&获取android表名时称那个表名:
查看我的问题:
SELECT * FROM SELECT ToTable FROM RDSynchronisationControlHeader
WHERE FromTable ='RD.TransactionControl'
当我从查询浏览器运行此查询时,这不起作用? 我们不能在from子句中使用select语句吗?
private boolean isTableRecords(String tablename){
DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(this);
boolean recordStatus = false;
try {
dbAdapter.createDataBase();
} catch (IOException e) {
Log.i("*** select ",e.getMessage());
}
dbAdapter.openDataBase();
String query = "SELECT * FROM SELECT ToTable FROM RDSynchronisationControlHeader WHERE FromTable ='?';";
String[]d = new String[]{tablename};
ArrayList stringList = dbAdapter.selectRecordsFromDBList(query, d);
dbAdapter.close();
ArrayList<Object> wmRouteList = new ArrayList<Object>();
recordStatus = stringList.size() >0 ? true : false;
return recordStatus;
}
请帮帮我..
提前致谢
答案 0 :(得分:0)
不是一个很大的SQLite人,但在我使用的任何环境中,当你使用子选择时,你都希望子查询在括号中,如:
SELECT * FROM
(
SELECT ToTable
FROM RDSynchronisationControlHeader
WHERE FromTable ='RD.TransactionControl'
)
答案 1 :(得分:0)
这应该可以作为
形式的查询$stored_value = SELECT ToTable FROM RDSynchronisationControlHeader WHERE FromTable = 'RD.TransactionControl';
$final_value = SELECT * FROM quote($stored_value);
这可能会或可能不会起作用,SQL不是我的强项。但是,quote函数能够将文本转换为Table标识符,这是我认为你需要的。
答案 2 :(得分:0)
SELECT语句的SQLite语法图(www.sqlite.org)包含表的内容和表名之间的混淆。
假设您的数据库中有一个名为xxxx的表:
SELECT * FROM (SELECT tbl_name FROM sqlite_master WHERE tbl_name = 'xxxx' AND Type='table');
返回的结果与
完全不同SELECT * FROM 'xxxx'
在第一个语句中,table-or-subery被视为表的内容,在第二个语句中table-or--query是表的名称。
所以你必须做一些像Josh的回答。运行SQLite两次,使用第一次调用的结果来构造第二个SQL语句。