【发布时间】:2014-03-10 15:27:18
【问题描述】:
当我连接到数据库并想从表中读取数据时,它不起作用并显示这些 异常详情:
System.IndexOutOfRangeException:找不到表 0。 第 141 行出错
我在数据集中只有一个表。你知道为我从表中阅读的最佳方式吗?我只返回一张桌子。使用foreach时,如何读取一行数据?
internal DataSet read(string query)
{
DataSet nds = new DataSet();
try
{
string connectionString = "...";
try
{
SqlConnection nsqlc = new SqlConnection(connectionString);
SqlCommand get = new SqlCommand(query, nsqlc);
nsqlc.Open();
SqlDataAdapter nsda = new SqlDataAdapter(get);
nsda.Fill(nds);
nsqlc.Close();
}
catch (Exception)
{
}
return nds;
}
catch (Exception)
{
return nds;
}
}
主要形式:
links = links + t.Tables[0].Rows[i][0].ToString() + "%";
String links = "";
links = "movie%";
DataSet t = n.read("select id , poster from Movie order by id desc");
for (int i = 0; i < 10; i++)
{
links = links + t.Tables[0].Rows[i][0].ToString() + "%";
links = links + t.Tables[0].Rows[i][1] + "%";
}
【问题讨论】:
-
很难说不知道
n.read()是什么以及做什么...... -
您是否考虑过将其插入调试器(是的,我知道,没有人使用它们)并检查为什么这个变量为空,可能是单步执行代码?这是你一开始就应该学习的东西 - 使用工具和基本调试。
-
是的。需要显示
n.read的代码。它显然没有像您认为的那样将表格添加到数据集中...... -
在捕获异常时不要试图悄悄地返回您的
DataSet。例外是要处理的事情,而不是你试图铺平的事情。我在想你埋在那里的有用信息。如果是这样,你能告诉我们吗? -
fwiw:你的
read(string query)方法迫使你编写非常不安全的代码,将容易受到 sql 注入攻击,将最终导致你的应用被黑了。