日期:2014-05-18  浏览次数:20748 次

关于把数据库里的数据调到c#中的一个问题?????

  for (int j = 0; j < ds1.Tables[0].Rows.Count; j++)
  for (int i = 0; i < ds1.Tables[0].Columns.Count; i++)
  {
  p[j, i] = (Double)ds1.Tables[0].Rows[j][i];//(这个地方出现错误!!!)
  }
出现的错误是:指定的转换无效。
其中数据库里表的大小事19*30的一个表。但是ds1.Tables[0].Columns.Count编译时的值是29????是什么问题呢????
望大侠们指教!!!!

------解决方案--------------------
第一个问题 指定的转换无效:ds1.Tables[0].Rows[j][i] 返回值是一个 object,如果要转化为double,需要强制类型转换,强制类型转换 你知道的吧。
第二个问题 ds1.Tables[0].Columns.Count 编译的时候是29 是正确的,应为它的索引时从0开始的 0-29共30个

不知道这么说 你明白吗
------解决方案--------------------
看看ds1.Tables[0].Rows[j][i]的值是什么,是否可以转换
------解决方案--------------------
(Double)ds1.Tables[0].Rows[j][i].toString();
先转化为字符串再转为double型

用Convert.toDuble(ds1.Tables[0].Rows[j][i].toString());
也行!
------解决方案--------------------
探讨
第一个问题 指定的转换无效:ds1.Tables[0].Rows[j][i] 返回值是一个 object,如果要转化为double,需要强制类型转换,强制类型转换 你知道的吧。
第二个问题 ds1.Tables[0].Columns.Count 编译的时候是29 是正确的,应为它的索引时从0开始的 0-29共30个

不知道这么说 你明白吗