2009-11-08 3 views
0

Может ли кто-нибудь помочь в преобразовании строкового значения в C# в битовый эквивалент в Sql. Я пытаюсь перепрограммировать значения datatable в таблицу Sql. Все значения, которые у меня есть в datatable, находятся в строчном формате. Когда я пытаюсь сделать массивную копию таблицы SQL, я получаю сообщение об ошибке для столбцов типа бит данных. Кто-нибудь может отправить код C#, чтобы преобразовать строку в тип бит до того, как я сделаю массивную копию таблицы SQL.Преобразование строки в бит перед вставкой в ​​базу данных

Спасибо, Vix

ответ

0

Тип bit данных в SQL Server совпадает с типом bool данных в C#. Поэтому просто преобразуйте свои строки в bool s (используя bool.Parse() или ваш любимый вариант), и вы должны быть установлены.

+0

Спасибо, Daniel.Как преобразовать строку в float для того же сценария. Я попытался использовать Convert.ToDouble (str); но это не сработало. Пожалуйста, помогите – vix

5

Если ваши строки «истина» и «ложь» (без учета регистра символов и пробелов) это будет работать:

bool bit = bool.Parse(str); 

Если ваши строки являются чем-то еще, вы можете использовать:

bool bit = !string.IsNullOrEmpty(str) && 
    (str[0]=='Y' || str[0]=='y' || str[0]=='T' || str[0]=='t' || str[0]=='1'); 

SQL требует значение bool.

+0

Спасибо Ray.How я конвертирую строку в float для того же самого сценария. Я попробовал Convert.ToDouble (str); но это не сработало. Пожалуйста, помогите. – vix

+0

Я использую double.Parse() для типа данных «float» SQL, но Convert.ToDouble() просто вызывает double.Parse(), поэтому он должен сработать. Вызывает ли вызов Convert.ToDouble() исключение или SQL отклонил полученное значение? Кроме того, какой уровень доступа к данным вы используете (т. Е. Какие вызовы вы используете для отправки своих данных?) –

+0

Ray, Когда я пытаюсь выполнить масштабную печать значений datatable, которые уже имеют ячейку после Convert.ToDouble (str) I'm получив следующую ошибку. System.InvalidOperationException: данное значение типа String из источника данных не может быть преобразовано в тип float указанного целевого столбца. ---> System.FormatException: Не удалось преобразовать значение параметра из строки в Double. ---> System.FormatException: строка ввода не была в правильном формате. в System.Number.StringToNumber (String str, NumberStyles options, NumberBuffer & number, NumberFormatInfo info, Boolean parseDecimal) – vix

1

SQL Server распознает "true" and "false" for the bit datatype. Кроме того, нуль хранит ноль, а ненулевые - как «1».

Вы отправляете "true" или true?

Если вы получаете ту же ошибку с удвоениями (согласно комментариям к другим ответам), то я подозреваю, что вы отправляете кавычки.

0
int a = Convert.ToInt32(row.ItemArray[5]); 
bool b; 
b = Convert.ToBoolean(a); 
switch (a) 
{ 
    case 1: 
     b = true; 
     break; 
    case 0: 
     b = false; 
     break; 
} 
Смежные вопросы