.net 我如何从阅读器中删除以前的字符串?

qni6mghb  于 2023-02-10  发布在  .NET
关注(0)|答案(1)|浏览(121)

如何从阅读器中删除前面的字符串?第一个字符串是正确的(“41 24.2028”),但后面的每个字符串都是堆叠的(“41 24.202841 24.2028”)。
我确实尝试清除LatTaken/LongTaken,消息框显示正确的字符串(“41 24.2028”)。
但是双精度.Parse(splitX[1]);显示一个错误(系统.索引超出范围异常:'索引在数组的边界之外。')
我该怎么办?还有别的办法吗?

connection.Open();

        string sql = "SELECT LatTaken, LongTaken, Temp, humi, Baro, TempAir from ParsedReadings";

        command = new SqlCommand(sql, connection);
        reader = command.ExecuteReader();
        while (reader.Read())
        {
            LatTaken += reader.GetValue(0);
            LongTaken += reader.GetValue(1);

            Temp += reader.GetDouble(2);
            humi += reader.GetDouble(3);

            Baro += reader.GetDouble(4);
            TempAir += reader.GetDouble(5);

            MessageBox.Show(LatTaken);
            var splitX = LatTaken.Split();
            MessageBox.Show(splitX[1]);
            var degreeX = double.Parse(splitX[0]);
            var minutesX = double.Parse(splitX[1]);

            var splitX2 = LongTaken.Split();
            var degreeX2 = double.Parse(splitX2[0]);
            var minutesX2 = double.Parse(splitX2[1]);

            var resultX = degreeX + minutesX / 60;
            var resultX2 = degreeX2 + minutesX2 / 60;

            Temp = 0f;
            humi = 0f;
            Baro = 0f;
            TempAir = 0f;
            LatTaken = string.Empty;
            LongTaken = string.Empty;
        }

        reader.Close();
        command.Dispose();
        connection.Close();
    }
e5nszbig

e5nszbig1#

问题是因为您在while循环的每次迭代中连接LatTaken和LongTaken值,而不是用数据库中的新值替换它们。
替换

LatTaken += reader.GetValue(0);
LongTaken += reader.GetValue(1);

LatTaken = reader.GetValue(0).ToString();
LongTaken = reader.GetValue(1).ToString();

这样,在循环的每次迭代中,LatTaken和LongTaken将使用数据库中的新值进行更新,而不是追加到以前的值。

相关问题