gpt4 book ai didi

c# - Index was outside the bounds of the array 异常

转载 作者:太空狗 更新时间:2023-10-29 23:14:56 25 4
gpt4 key购买 nike

这是我从平面文件中获取数据并插入到 SQL Server 中的代码。它正在生成异常(索引超出数组范围)。

string path = string.Concat(Server.MapPath("~/TempFiles/"), Fileupload1.FileName);                       
string text = System.IO.File.ReadAllText(path);
string[] lines = text.Split(' ');
con.Open();
SqlCommand cmd = new SqlCommand();
string[] Values = new string[3];
foreach (string line1 in lines)
{
Values = line1.Split(';');
string query = "INSERT INTO demooo VALUES ('" + Values[0] + "','" + Values[1] + "','" + Values[2] + "')";
cmd = new SqlCommand(query,con);
cmd.ExecuteNonQuery();
}

最佳答案

发生异常是因为您的一行中的元素少于三个,并用分号分隔。即使您将 Values 声明为三个元素的 String 数组,影响变量到 String.Split() 函数的结果也会使它变得无关紧要:您的数组将具有返回数组的任何长度。如果它更少,您的代码肯定会失败。

如果它不应该发生我建议你在你的代码中做一个断言来帮助你调试:

// ...
Values = line1.Split(';');
// the following will make the debugger stop execution if line.Length is smaller than 3
Debug.Assert(line1.Length >= 3);
// ...

作为旁注,我应该提到制作一个批处理 INSERT 会更有效率。此外,您声明和重新影响 cmd 变量的方式也不太正确。最后,您应该对您的值调用 String.Replace 以确保任何撇号都加倍。否则您的代码将对 SQL 注入(inject)攻击开放。

关于c# - Index was outside the bounds of the array 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22868508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com