当字符串键入串联时,阵列索引在C#中弹跳

  • 本文关键字:索引 阵列 字符串 c#-4.0
  • 更新时间 :
  • 英文 :


你好,朋友这是我的代码,我正在使用以下代码拆分字符串

            string s = dt.Rows[0]["tstrim"].ToString();
            for (int i = 0; i <= s.Length-1; i++)
                {
                var val = s.Split(',')[i];
                    SqlCommand cmd1 = new SqlCommand("select Value,Details from Travelling_Master where Value='" + val + "'", connLive);
                    SqlDataAdapter da1 = new SqlDataAdapter(cmd1);
                    DataTable dt1 = new DataTable();
                    da1.Fill(dt1);
                    if (dt1 != null)
                    {
                        string val1 = dt1.Rows[0]["Value"].ToString();
                        if (val1 == "$1")
                        {
                            v1 = "Check Registerd CallerId.";
                        }
                        else if (val1 == "$7")
                        {
                            v2 = "Selecting Query From Customer.";
                        }
                        else
                        {
                        }
                        label2.Text = v1 + "," + v2;
                    }
                }

在最后一个字符串吐痰之后发生时,发生了错误

var val = s.Split(',')[i];

阵列索引不弹跳当我从数据库中获取字符串并更新到另一个表中时,这样做了因此,请帮助解决此错误

是的,当前i可以在s的长度内获取每个值 - 您假设分裂后有许多元素。。

您应该分开一次,然后迭代:

string s = dt.Rows[0]["tstrim"].ToString();
string[] bits = s.Split(',');
foreach (string val in bits)
{
    ...
}

通常,当您不需要时,您应该更喜欢foreach 集合中的索引。

另外,写作更传统:

for (int i = 0; i < s.Length; i++)

for (int i = 0; i <= s.Length - 1; i++)

...独家上限在计算机科学中非常普遍,值得习惯它们。

重要说明

您的代码还有其他问题,但与您看到的例外没有直接相关。您目前正在通过在其中间加入一个值来构建SQL字符串:

new SqlCommand("select Value,Details from Travelling_Master where Value='" + val + "'", 
               connLive);

不要那样做。真的,真的不那样做。改用参数化SQL:

  • 它避免了SQL注入攻击
  • 它避免了转换问题(尤其是日期和时间)
  • 它使您的代码更清晰(SQL只是SQL,并且值为值)

最新更新