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

关于arraylist和数据库读取
大家好,我使用arraylist从数据库中获取某列值,但是数据库中的元素赋值给arraylist的时候只能是先转换为string么?

代码如下:
 string str_orconn = "Data Source = ORCL;User ID=scott;Password=z19881014";
  string str_orcommand = "select * from 数据库示例1";
  OracleConnection orconn = new OracleConnection(str_orconn);
  orconn.Open();
  OracleCommand orcmd = new OracleCommand(str_orcommand, orconn);
  OracleDataReader ordr = orcmd.ExecuteReader();
  while (ordr.Read())
  {
  i_arr.Add(new string(ordr["NAME"].ToString().ToCharArray()));
  i_arr_int.Add(new string(ordr["ID"].ToString().ToCharArray()));
  }
  ordr.Close();
  orconn.Close();
  ID_NO_str = (string[])i_arr.ToArray(typeof(string)); //Arraylist转换为
  ID_NO_int = (int[])i_arr_int.ToArray(typeof(Int32)); //i_arr_int转换为整数型;
 第一个问题:
“i_arr.Add(new string(ordr["NAME"].ToString().ToCharArray()));”只能是先转换为string的形式么?
比如我“ID”其实是int类型的,但是还是要先转换为string;
第二个问题:
 “ID_NO_int = (int[])i_arr_int.ToArray(typeof(Int32)); //i_arr_int转换为整数型;”这个从字符串转换成数组总是不成功,提醒“源数组中至少有一个元素无法被向下转换到目标数组类型。”,不太明白是为啥,因为i_arr_int[]中已经有我所需的内容了,只不过是以字符串形式存储的

请大家指教,谢谢~

------解决方案--------------------
为什么不用List<string>和List<int>
------解决方案--------------------
ArrayList 不需要统一类型,所以存在类型不安全性
------解决方案--------------------
while (ordr.Read())
{
i_arr.Add(ordr["NAME"]);
i_arr_int.Add(ordr["ID"]);
}
这样写下面的转换不会有问题