你好,朋友这是我的代码,我正在使用以下代码拆分字符串
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,并且值为值)