Hardly.SqlController.GetColumns C# (CSharp) Method

GetColumns() static private method

static private GetColumns ( string tableName ) : SqlColumnHeaders[]
tableName string
return 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;
        }

Usage Example

コード例 #1
0
        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();
            }
        }