Отобразите DataType и размер столбца от результатов запроса SQL Server во времени выполнения

Swift 3 Version на тот случай, если кто-то просто захочет скопировать и amp; Вставить:

class TopAlignedCollectionViewFlowLayout: UICollectionViewFlowLayout {
    override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
        if let attrs = super.layoutAttributesForElements(in: rect) {
            var baseline: CGFloat = -2
            var sameLineElements = [UICollectionViewLayoutAttributes]()
            for element in attrs {
                if element.representedElementCategory == .cell {
                    let frame = element.frame
                    let centerY = frame.midY
                    if abs(centerY - baseline) > 1 {
                        baseline = centerY
                        alignToTopForSameLineElements(sameLineElements: sameLineElements)
                        sameLineElements.removeAll()
                    }
                    sameLineElements.append(element)
                }
            }
            alignToTopForSameLineElements(sameLineElements: sameLineElements) // align one more time for the last line
            return attrs
        }
        return nil
    }

    private func alignToTopForSameLineElements(sameLineElements: [UICollectionViewLayoutAttributes]) {
        if sameLineElements.count < 1 { return }
        let sorted = sameLineElements.sorted { (obj1: UICollectionViewLayoutAttributes, obj2: UICollectionViewLayoutAttributes) -> Bool in
            let height1 = obj1.frame.size.height
            let height2 = obj2.frame.size.height
            let delta = height1 - height2
            return delta <= 0
        }
        if let tallest = sorted.last {
            for obj in sameLineElements {
                obj.frame = obj.frame.offsetBy(dx: 0, dy: tallest.frame.origin.y - obj.frame.origin.y)
            }
        }
    }
}
9
задан Blake Taylor 22 June 2009 в 09:27
поделиться

4 ответа

Что вы будете делать с хранимыми процедурами, которые возвращают разные наборы результатов в зависимости от их параметров?

В любом случае вы можете настроить SqlDataAdapter.SelectCommand вместе с необходимыми параметрами, а затем вызвать метод FillSchema. Предполагая, что схему можно определить, вы получите DataTable, настроенный с правильными именами и типами столбцов, а также некоторыми ограничениями.

2
ответ дан 3 November 2019 в 07:14
поделиться

Немного длинное дело, попробуйте поработать с SET FMTONLY ON ( или выкл). Согласно BOL, это «возвращает клиенту только метаданные. Может использоваться для проверки формата ответа без фактического выполнения запроса». Я подозреваю, что это будет включать в себя то, что вы ищете, поскольку BCP использует это. (Я наткнулся на этот параметр при отладке некоторых очень странных проблем с BCP.)

2
ответ дан 3 November 2019 в 07:14
поделиться

Не могли бы вы добавить еще один select к своей процедуре?

Если да, вы могли бы сделать это с помощью функции sql_variant_property .

Declare @Param Int
Set @Param = 30

Select sql_variant_property(@Param, 'BaseType')
Select sql_variant_property(@Param, 'Precision')
Select sql_variant_property(@Param, 'Scale')

Я отправил это в на этот вопрос.

Я спрашиваю, как определить, что sql типы серверов (например, varchar (25), int ...) имеют то, что мне дали

Затем вы можете распечатать тип, точность (т.е. 25, если его VarChar (25)) и масштаб параметра.

Надеюсь, что это поможет ... : )

1
ответ дан 3 November 2019 в 07:14
поделиться

Если вы не ограничены T-SQL и, очевидно, не возражаете против запуска SP (поскольку SET FMTONLY ON не совсем надежен), вы определенно CAN может вызывать SP, скажем, из C #, используя SqlDataReader . Затем проверьте SqlDataReader , чтобы получить столбцы и типы данных. У вас также может быть несколько наборов результатов, вы также можете легко перейти к следующему набору результатов из этой среды.

0
ответ дан 3 November 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: