1

我有问题。我在存储过程中有 2 个查询。如果条件为真,则两者都在特定条件下运行,查询一个执行并从 3 个表中返回 7 列。如果条件失败,第二个查询返回 4 列。

在前端,我使用数据表来存储查询结果。我从数据表中为文本框赋值。

dt 是数据表名

Txt_name.Text=dt.Rows[0][6].ToString();

问题是当第二个查询执行时发生错误。6 处不存在列。

我如何找到 dt 在索引 6 处有列?

4

3 回答 3

2

试试这个代码

 int indx = 6;
 if(dt != null and dt.Columns.Count > indx)
 {
     Txt_name.Text=dt.Rows[0][indx].ToString();
 }
于 2012-08-11T10:27:45.760 回答
1

您可以检查列数,如下所示:

int index = 6;
Txt_name.Text = dt.Columns.Count > index ? dt.Rows[0][index].ToString() : String.Empty;
于 2012-08-11T07:48:23.193 回答
0

您是否有权修改存储过程?并且还要管理所有使用这个存储过程的资源?我建议无论结果如何,它都返回相同的结构。

如果结果不正确,只需将其他字段留空即可。您可以使用运算符实现此目的,如果存在 NULL(即连接表中没有记录)COALESCE,则返回给定值(如空字符串的情况)。''

一个基于字段计数表现不同的函数几乎可以作为一种保险来破坏未来的代码。会有一个神奇的数字“6”,它可以使 if-else-clause 的行为反转或总是评估相同的结果。如果存储过程必须返回不同的结构,请先评估真/假,然后调用适当的存储过程。

于 2012-08-11T08:15:05.073 回答