索引零问题与sql

时间:2012-03-05 15:45:52

标签: c# mysql

我的sql一直遇到问题:

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

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

不确定它是否是我的String.Format?

4 个答案:

答案 0 :(得分:4)

是的,对于string.Format:

,第二行应该再次为0
 Aboutme.Text = String.Format("{0}", reader.GetString(0)); 

答案 1 :(得分:2)

我的猜测是第二行代码

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

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

你应该写它:

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

答案 2 :(得分:0)

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

当然你根本不需要在这里格式化(假设你最终会得到输入字符串),而我怀疑你想要第2列。(我的猜测是那就是错误来自的地方,毕竟。)

Aboutme.Text = reader.GetString(2);

如果您真的想使用string.Format

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

答案 3 :(得分:0)

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

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

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

如果您这样写,代码和执行的算法都会更简单:

Aboutme.Text = reader.GetString(0);