Ваше приложение может быть основано на представлениях / таблице INFORMATION_SCHEMA. Это документация по SQL Server, но вы можете легко найти ее и для других баз данных:
http://msdn.microsoft.com/en-us/library/ms186778.aspx
Примеры SQL:
select * from INFORMATION_SCHEMA.TABLES
select * from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'users'
Если вы хотите использовать это решение со многими базами данных, чтобы отделить ваше приложение от движка БД, вы можете создать интерфейс определения IMetadataProvider и создать реализации для разных баз данных:
interface IMetadataProvider {
...GetTables();
...GetTableColumns();
...GetTableRelations();
//Other functions required by your project
}
Вы также можете создать свой собственный интерфейс построителя запросов:
interface IQueryBuilder {
...From(string tableName);
...Top(int numberOfRows); //TOP for SQL SERVER, LIMIT for MySQL
}