static private GetColumns ( string tableName ) : SqlColumnHeaders[] | ||
tableName | string | |
Результат | SqlColumnHeaders[] |
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;
}
public SqlTable(string tableName) { if (tableName != null && tableName.Trim().Length > 0) { this.tableName = tableName; SqlColumnHeaders[] columns = SqlController.GetColumns(tableName); if (columns != null && columns.Length > 0) { uint primaryKeyCount = 0; foreach (SqlColumnHeaders column in columns) { if (column.isPrimaryKey) { primaryKeyCount++; } else { break; } } if (primaryKeyCount > 0) { primaryKeyHeaders = new SqlColumnHeaders[primaryKeyCount]; } else { primaryKeyHeaders = null; } long additionalKeyCount = columns.Length - primaryKeyCount; if (additionalKeyCount > 0) { additionalKeyHeaders = new SqlColumnHeaders[additionalKeyCount]; } else { additionalKeyHeaders = null; } for (int i = 0; i < columns.Length; i++) { if (i < primaryKeyCount) { Debug.Assert(columns[i].isPrimaryKey); primaryKeyHeaders[i] = columns[i]; } else { Debug.Assert(!columns[i].isPrimaryKey); additionalKeyHeaders[i - primaryKeyCount] = columns[i]; } } } else { throw new ArgumentNullException(); } } else { throw new ArgumentNullException(); } }