Rog*_*ger 14 java database sqlite android
您认为从数据库获取所有表名并将其添加到列表的正确方法是什么?
现在就到了这么远:
final ArrayList<String> dirArray = new ArrayList<String>();
SqlHelper sqlHelper = new SqlHelper(this, "TK.db", null, 1);
SQLiteDatabase DB = sqlHelper.getWritableDatabase();
Cursor c = DB.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
c.moveToFirst();
while (c.isAfterLast() == false) {
dirArray.add("n" + c.getColumnIndex("name"));
c.moveToNext();
}
c.close();
Run Code Online (Sandbox Code Playgroud)
但它输出一些"android_metadata"而不是我的表名.所以猜测查询有问题.
谢谢!
SBe*_*413 11
刚刚使用我正在使用的SQLite数据库在FireFox中的SQLite Manager插件中进行了快速测试,并且您正在使用的查询确实返回了表名.您是否正确创建了表格并且是否根据您的期望测试了存在?
要迭代,执行以下操作:
if (c.moveToFirst())
{
while ( !c.isAfterLast() ){
dirArray.add( c.getString( c.getColumnIndex("name")) );
c.moveToNext();
}
}
Run Code Online (Sandbox Code Playgroud)
试试这段代码
final ArrayList<String> dirArray = new ArrayList<String>();
SqlHelper sqlHelper = new SqlHelper(this, "TK.db", null, 1);
SQLiteDatabase DB = sqlHelper.getWritableDatabase();
Cursor c = DB.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
while(c.moveToNext()){
String s = c.getString(0);
if(s.equals("android_metadata"))
{
//System.out.println("Get Metadata");
continue;
}
else
{
dirArray.add(s);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21845 次 |
| 最近记录: |