当我连接到数据库并且我想要从表中读取数据时,它们无法显示这些数据 例外细节:
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] + "%";
}
答案 0 :(得分:4)
这里最接近答案的是 n.read
方法返回一个没有表格的DataSet
实例。您需要使用调试器进入该方法并找出其行为的原因。
如果您看到问题所在,请修复它。如果没有,请分享 read
方法代码,然后有人可以为您提供进一步的帮助。
查看您的更新帖子,我发现您正在吞下尝试获取数据时可能发生的每个可能的异常。从catch
方法中删除read
块。这将允许您查看真正的问题是什么。
您需要在全球范围内从代码中删除异常吞咽。我建议你做一些谷歌搜索,找出为什么这是一个可怕的习惯。
关于“更好的阅读表格”,您应该考虑使用IDataReader
。
string links = "movie%";
using (var connection = new SqlConnection("your connection string");
{
using (var command = someExistingConnection.CreateCommand())
{
command.CommandText = "select id, poster from Movie order by id desc";
command.Connection = connection;
connection.Open();
try
{
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
var idValue = reader.GetObject(0).ToString(); // would be better to use actual field type, which is unknown at the time I'm writing this
var posterValue = reader.GetString(1);
// perform concatenation here using the two variables declared above
links += String.Format("{0}%{1}%", idValue, posterValue);
}
}
}
finally
{
connection.Close();
}
}
}
远远超过使用DataSet
处理的效果。