0

我想从 mysql 数据库返回值的 ArrayList。我尝试了几种解决方案,但它们并不像我需要的那样优雅。我的问题:我在数据库中有一个可以更改结构的表(更改表)。我需要一种方法来检测当前表结构,然后将数据放入具有正确类型的数组列表中(不强制转换为对象),这个问题有什么解决方案吗?我不想要里面写的逻辑。

IDbCommand sql = dbLink.CreateCommand ();
sql.CommandText = "SELECT * FROM table WHERE cond";

IDataReader reader = null;

try 
{
    reader = sql.ExecuteReader ();
} 
catch (Exception er) 
{
    Log.error ("error executing query");
}

while(reader.Read()) 
{
    //dont want like this
    value = (string)reader["item"];
    //logic to implement
}


reader.Close ();
reader = null;
sql.Dispose ();
sql = null;
4

1 回答 1

4

鉴于无论如何ArrayList都要存储它Object,您可以使用:

list.Add(reader["item"]);

这只是将责任放在从列表中获取它的任何东西上,然后才能做任何有用的事情。想想任何代码使用这些结果,以及您期望它如何处理它们。

(不过,我同意 Arran 的评论 - 你应该使用using语句。此外,你几乎不想在使用完变量后将它们设置为 null,你不应该 catch Exception,而且你绝对不应该尝试reader在异常已被抛出 - 你最终会得到一个NullReferenceException.)

于 2013-05-02T20:10:31.670 回答