2016-12-13 64 views
-1

我只是试图使用datareader将datareader [0]处的整数读入一个称为“每晚价格”的整数。将SQL数据读取器转换为int

int price_per_night = 0; 
while (read_price.Read()) 
{ 
    price_per_night = (read_price[0]); 
} 

无论我尝试多少种方法,它都不会转换。有一个明确的答案吗?

+3

'int.Parse()','int.TryParse()','Convert.ToInt32()'等 – David

+1

int.tryparse试试..还有什么是“read_price的价值[0]“,你试过tostring()然后解析为int?现在我所看到的是你正在采取什么是未知类型,并试图将它塞进一个int。 – Trey

+0

现在也是阅读.NET命名约定的好时机。 –

回答

5

这是怎么回事?

price_per_night = Convert.ToInt32(read_price[0]); 
+0

不起作用。 “输入字符串格式不正确”。我觉得这应该很简单,但看起来恰恰相反。 –

+0

请注意,如果'read_price [0]'为空或不是数字,它将引发异常。 –

6

您可以使用阅读器GetInt32方法和调用IsDBNull调用此方法之前检查null值。

继续GetInt32等记住以下几点:

不会进行任何转换;因此,检索到的数据必须是一个32位有符号整数。

int price_per_night = 0; 
while (read_price.Read()) 
{ 
    if (!read_price.IsDBNull(0)) 
    { 
     price_per_night = read_price.GetInt32(0); 
    } 
} 
+0

嗨,感谢威廉,每天都要学习新东西! – Trey