Некоторые сайты, что документ и объясняет это и другие взломы битового жонглирования:
И дедушка их, книга "Восхищение Хакера" Henry Warren Jr. :
Как , который объясняет страница Sean Anderson, выражение ((x & (x - 1)) == 0)
неправильно указывает, что 0 питание 2. Он предлагает использовать:
(!(x & (x - 1)) && x)
для исправления той проблемы.
В SQL немного необычно создавать таблицы из предоставленного клиентом определения объекта Datatable. Таблицы - это тщательно созданные объекты на языке SQL, с учетом времени развертывания при выборе подходящего диска, с учетом индексации во время разработки и со всеми проблемами, связанными с правильным моделированием базы данных.
Лучше объясните, что вы пытаетесь сделать. для достижения, чтобы мы понимали, какой совет дать.
В качестве примечания, в SQL 2008 есть очень простой способ создать таблицу из определяемого клиентом Datatable: передать DataTable в качестве параметра значения таблицы, затем выполнить SELECT * INTO
, это эффективно перенесет определение Datatable и его данные содержимого в реальную таблицу в SQL.
Насколько эффективна вам нужна? Я бы, вероятно, написал свой собственный TSQL (на основе столбцов DataTable
) для создания таблицы + столбцы, но у вас есть выбор; если у вас небольшое количество строк, подойдет SqlDataAdapter
. Если у вас есть лотов данных, то SqlBulkCopy
принимает DataTable
и имя таблицы ...
Я бы просто создал оператор Create Table на основе DataTable и отправил его в базу данных. Вы также можете использовать SMO (объекты управления SQL Server). Не уверен, что будет самым быстрым.
Это определенно то, что может быть включено в класс уровня фреймворка для повторного использования.
Следующая ссылка содержит информацию (и образец кода SqlTableCreator
) о том, как для этого: Создание новой таблицы в SQL Server из ADO.NET DataTable . Вы можете найти вилки SqlTableCreator
здесь , здесь и здесь .
Надеюсь, что это поможет.
Если вы имеете в виду любую произвольную таблицу данных ADO.Net, я думаю, вам придется закодировать ее как инструмент генерации кода DDL, выполняя итерацию по коллекции столбцов DataTables при построении DDL-оператор "Create Table ...".
Затем подключитесь к нужной базе данных и выполните построенный DDL-оператор Create Table.