2011-01-16 44 views
0
SqlDataReader reader; 

String sqlreadcom = "SELECT Balance FROM IncomeGenerator"; 

using (reader = new SqlCommand(sqlreadcom,sqlCon).ExecuteReader()) 
{ 
    if(reader.HasRows) 
    { 
     while(reader.Read()) 
     { 
     String value = reader.GetString(reader.GetOrdinal("Balance")); 
     txtbalance.Text = Convert.ToString(value); 
     } 
    } 
} 

Balance字段數據類型是float。我需要將其轉換爲字符串。無法投射型「System.Double」的目的爲類型「System.String」

這是我得到

無法轉換類型 「System.Double」到類型的對象的消息 「System.String」

可有人指導我做這個錯誤免費

回答

4

object value = reader.GetValue(reader.GetOrdinal("Balance")); 
txtbalance.Text = value.ToString(); 
試試吧

如果有很多行閱讀,你應該做的GetOrdinal外循環的像

int idxBalance = reader.GetOrdinal("Balance"); 

,並使用idxBalance更高版本。

+0

非常感謝。這工作 – Nubkadiya

1

讀它是float第一:

float value = reader.GetFloat(reader.GetOrdinal("Balance")); 

,然後ToString()它:

txtbalance.Text = value.ToString(); 

,如果你願意,你可以將其格式化(例如與currency format):

txtbalance.Text = value.ToString("C"); 
+1

一些自定義格式也可以指定 – abatishchev

+0

@abatishchev,當然。 –

0

使用reader["Balance"].ToString()

0

嘗試

txtbalance.Text= value.toString(); 
2

您應該使用

double val = reader.GetDouble(reader.GetOrdinal("Balance")); 

,並簡單地將其轉換:

txtbalance.Text = val.ToString(); 

編輯: 當我再次(如果你改變它看到你的代碼如下):

while(reader.Read()) 
    { 
    var val = reader.GetDouble(reader.GetOrdinal("Balance")); 
    txtbalance.Text = val.ToString(); 
    } 

每次迭代中UI更新的目的是什麼?用戶在這種情況下看不到任何東西,在txtbalance.Text = val.ToString();您只顯示最後一個記錄值。因此,而不是從DB中獲取n項目,在您的查詢中執行某種排序並僅顯示第一項。

+0

你不知道「價值」變量聲明爲字符串? – HABJAN

+0

@HABJAN,我會在編輯中回答,忘了它,然後修復它。 –

+0

@HABJAN,謝謝:) –

相關問題