你好朋友这是我的代码,我使用下面的代码来分割字符串
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];
数组索引没有反弹 这是在我从数据库获取字符串并更新到另一个表时完成的 所以请帮忙解决这个错误
答案 0 :(得分:1)
是的,目前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: