我正在开发可以处理多个数据库服务器的应用程序,如"MySQL"和"MS SQL Server".
我想使用适用于所有数据库类型的通用查询来获取特定数据库的表名.我试过以下:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
Run Code Online (Sandbox Code Playgroud)
但它给出了特定服务器的所有数据库的表名,但我想获取所选数据库的表名.如何限制此查询以获取特定数据库的表?
我需要在SQLite数据库中获取列名及其表.我需要的是一个包含2列的结果集:table_name | column_name.
在MySQL中,我能够通过数据库上的SQL查询获取此信息INFORMATION_SCHEMA.但是SQLite提供了表sqlite_master:
sqlite> create table students (id INTEGER, name TEXT);
sqlite> select * from sqlite_master;
table|students|students|2|CREATE TABLE students (id INTEGER, name TEXT)
Run Code Online (Sandbox Code Playgroud)
这导致DDL构造查询(CREATE TABLE)对我没有帮助,我需要解析它以获取相关信息.
我需要获取表的列表并将它们与列连接,或者只获取列和表名列.所以PRAGMA table_info(TABLENAME)不适合我,因为我没有表名.我想获取数据库中的所有列元数据.
有没有更好的方法通过查询数据库来获取结果集的信息?
我试过这段代码
Cursor c=db.rawQuery("SELECT name FROM sqlite_master WHERE type = 'table'",null);
c.moveToFirst();
while(!c.isAfterLast()){
Toast.makeText(activityName.this, "Table Name=> "+c.getString(0), Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)
但它会引发错误 "android.database.sqlite.SQLiteException: no such table: sqlite_master(code 1):,while compiling: SELECT name FROM sqlite_master WHERE type='table'"
如何获取所有表名?帮我
提前致谢..