2009-11-08 44 views
0

任何人都可以帮助将C#中的字符串值转换为Sql中的等价物。我试图将数据表的值批量复制到Sql表中。我在数据表中的所有值都是字符串格式。当我尝试批量复制到SQL表时,我得到了位数据类型列的错误。任何人都可以在将批量复制到SQL表之前发布C#代码以将字符串转换为位类型。在插入数据库之前将字符串转换为位

感谢, Vix指数

回答

0

SQL Server中的bit数据类型达在C#中bool数据类型相匹配。因此,只需将您的字符串转换为bool s(使用bool.Parse()或您最喜欢的替代方法),即可设置。

+0

谢谢,丹尼尔。如何将字符串转换为浮动相同scenario.I尝试使用Convert.ToDouble(str);但它没有工作。请帮助 – vix 2009-11-08 05:59:59

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

谢谢雷。如何将字符串转换为浮动相同scenario.I尝试Convert.ToDouble(str);但它没有工作,请帮助。 – vix 2009-11-08 05:44:20

+0

我使用double.Parse()作为'float'SQL数据类型,但Convert.ToDouble()只是调用double.Parse()所以它应该已经工作。 Convert.ToDouble()调用本身是否引发异常,或者SQL是否拒绝了结果值?另外,你正在使用什么数据访问层(例如,你使用什么样的调用来提交数据?) – 2009-11-08 06:03:43

+0

Ray,当我试图批量复制Convert.ToDouble(str)之后已有单元格的数据表的值时得到以下错误。 System.InvalidOperationException:来自数据源的String类型的给定值无法转换为指定目标列的float类型。 ---> System.FormatException:无法将参数值从字符串转换为Double。 ---> System.FormatException:输入字符串的格式不正确。 at System.Number.StringToNumber(String str,NumberStyles options,NumberBuffer&number,NumberFormatInfo info,Boolean parseDecimal) – vix 2009-11-08 06:19:58

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; 
} 
相关问题