SQL 的索引零问题

本文关键字:问题 索引 SQL | 更新日期: 2023-09-27 18:26:39

我的sql一直遇到问题:

{ 
    Name.Text = String.Format("{0} {1}", reader.GetString(0), reader.GetString(1)); 
    Aboutme.Text = String.Format("{2}", reader.GetString(0)); 
} 

索引(从零开始(必须大于或等于零?

不确定是否是我的字符串格式?

SQL 的索引零问题

是的,字符串的第二行应该再次为 0。格式:

 Aboutme.Text = String.Format("{0}", reader.GetString(0)); 

我的猜测是第二行代码

Aboutme.Text = String.Format("{2}", reader.GetString(0)); 

在这种情况下,String.Format 正在寻找 3 个参数,{0}、{1},最后是{2}。你只有一个。

你应该写它有:

Aboutme.Text = String.Format("{0}", reader.GetString(0));

问题不在于SQL的索引,而在于string.Format的索引。这在堆栈跟踪中应该很明显,它将指向string.Format而不是reader.GetString。仔细查看堆栈跟踪可以为您节省各种工作量:)

当然,您

在这里根本不需要格式化(鉴于您最终只会得到输入字符串(,我怀疑您想要第 2 列。(我的猜测是,毕竟这就是错误的来源。

Aboutme.Text = reader.GetString(2);

如果你真的想使用string.Format

Aboutme.Text = string.Format("{0}", reader.GetString(2));

有一个比公认的答案提出的更好的解决方案。 请注意,声明...

Aboutme.Text = String.Format("{0}", reader.GetString(0));

。将格式字符串和一些字符串值传递给 String.Format , 分析格式字符串,调用ToString()字符串值,然后将该值插入到结果中序列{0}指示的位置。 然后,当然,它返回构造的字符串作为其结果。 因为格式字符串是"{0}"的,所以构造的字符串将具有与参数相同的值。

如果你写这个,编写的代码和执行的算法都会更简单:

Aboutme.Text = reader.GetString(0);