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'
有人可以指导我让这个错误免费
答案 0 :(得分:7)
尝试
object value = reader.GetValue(reader.GetOrdinal("Balance"));
txtbalance.Text = value.ToString();
如果要读取的行数很多,则应该在循环之外执行GetOrdinal
,如
int idxBalance = reader.GetOrdinal("Balance");
稍后再使用idxBalance
。
答案 1 :(得分: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();
中您只显示最后一个记录值。因此,不是从数据库中获取n
项,而是在查询中执行某种顺序,只显示第一项。
答案 2 :(得分:1)
首先阅读float
:
float value = reader.GetFloat(reader.GetOrdinal("Balance"));
然后ToString()
:
txtbalance.Text = value.ToString();
如果您愿意,可以对其进行格式化(例如currency format):
txtbalance.Text = value.ToString("C");
答案 3 :(得分:0)
使用reader["Balance"].ToString()
答案 4 :(得分:0)
尝试
txtbalance.Text= value.toString();