最近工作用到SQL语句查询表中所有字段的名称,网上查询,发现不同数据库的查询方法不同,例如:
SQL server
查询表的所有字段名称:
Select name from syscolumns Where ID=OBJECT_ID('表名')
Sqlite
查询表中所有字段名称;
SELECT name FROM sqlite_master WHERE type=’table’ ORDER BY name;
Oracle
查看所有字段
select column_name from user_tab_columns where table_name='ZW_YINGYEZ'
考虑到SQL语句的通用性,结合抽象工厂模式,个人结合DataTable、DataSet和基本的SQL语句,设计了一个通用的方法:
List<string> filedList = new List<string>();
DataSet ds = _autoTestSQL.ReadMethod(string.Format("select * from {0} order by [AutoId]", 表名));
DataTable dt = new DataTable();
dt.Clear();
dt = ds.Tables[0];
for (int j = 0; j < dt.Columns.Count; j++)
{
filedList.Add( dt.Columns[j].ColumnName.Trim() );
}
return filedList;//所有表的字段列表
这样,就间接的得到所有的字段;