internal static SqlColumnHeaders[] GetColumns(string tableName)
{
if(tableName != null) {
Debug.Assert(tableName.Length > 0 && tableName.IsLowercase() && tableName.IsTrimmed());
try {
List<object[]> columnObjects = Select("information_schema.columns",
null,
"column_name, is_nullable='YES', character_maximum_length, column_type, column_key='PRI', column_key='UNI', extra='auto_increment'",
"table_name=?a",
new string[] { tableName },
"ordinal_position",
0
);
if(columnObjects != null) {
SqlColumnHeaders[] columns = new SqlColumnHeaders[columnObjects.Count];
for(int i = 0; i < columnObjects.Count; i++) {
columns[i] = SqlColumnHeaders.FromSql((string)columnObjects[i][0],
(long)columnObjects[i][1] > 0,
columnObjects[i][2].GetType().Equals(typeof(DBNull)) ? 0 : (ulong)columnObjects[i][2],
(string)columnObjects[i][3],
(long)columnObjects[i][4] > 0,
(long)columnObjects[i][5] > 0,
(long)columnObjects[i][6] > 0);
}
return columns;
}
} catch(Exception e) {
Log.exception(e);
}
}
Debug.Fail();
return null;
}