关于arraylist和数据库读取

xiaobai_zhang 2012-06-07 09:23:02
大家好,我使用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[]中已经有我所需的内容了,只不过是以字符串形式存储的

请大家指教,谢谢~
...全文
371 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
风之影子 2012-06-07
  • 打赏
  • 举报
回复
你把你的arraylist转换为list<int>在存ID
风之影子 2012-06-07
  • 打赏
  • 举报
回复
去了解一下list吧
__天涯寻梦 2012-06-07
  • 打赏
  • 举报
回复
while (ordr.Read())
{
i_arr.Add(ordr["NAME"]);
i_arr_int.Add(ordr["ID"]);
}
这样写下面的转换不会有问题
xiaobai_zhang 2012-06-07
  • 打赏
  • 举报
回复
回复3l:对,就是说有的字符无法转换,但是arraylist中存放的就是“1到6”,感觉没什么问题啊
xiaobai_zhang 2012-06-07
  • 打赏
  • 举报
回复
回复2l:恩,但是我觉得我只是读取了数据库中的某一列,而那一列的类型都是一样的啊,个人觉得应该没啥问题
xiaobai_zhang 2012-06-07
  • 打赏
  • 举报
回复
回复1L:从网上学的arraylist,我去试试list,谢谢
cnfixit 2012-06-07
  • 打赏
  • 举报
回复
1、i_arr.Add接受object类型的参数,也就是说可以任何object类型或者继承自object的类型
2、这么提示说明i_arr_int有不符合目标数组类型的元素,也就是有元素不能转换成int32
q107770540 2012-06-07
  • 打赏
  • 举报
回复
ArrayList 不需要统一类型,所以存在类型不安全性
Rotaxe 2012-06-07
  • 打赏
  • 举报
回复
为什么不用List<string>和List<int>

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧