读取数据库查询结果,某列用DataRow读取后变量 显示到 dataGridView


string cedian = textBox1.Text;
            string sql = "SELECT upid,RegAddr,StatusID,IOTime,DataFlag AS 值 FROM deil WHERE upid = 3316";
            string sqlStr = sql.ToString();
            SqlDataAdapter myDataAdapter;
            DataSet myDataSet = new DataSet();
            myDataAdapter = new SqlDataAdapter(sqlStr, detail);
            
            //Fill 方法会执行一系列操作 connection.open command.reader 等等
            //反正到最后就把 sql语句执行一遍,然后把结果集插入到 ds 里.
            myDataAdapter.Fill(myDataSet);

            DataTable dt = myDataSet.Tables[0];
            foreach (DataRow row in dt.Rows)
            {
                byte[] value = smethod_10(row["值"].ToString());
                double num3 = BitConverter.ToDouble(value, 0);
                DataRow dataRow3 = dt.NewRow();
                dataRow3["值"] = num3;
                dt.Rows.Add(dataRow3);
                myDataAdapter.Fill(myDataSet, "test");
                dataGridView2.DataSource = myDataSet.Tables["test"];
}
显示错误 System.InvalidOperationException:“集合已修改;枚举操作可能无法执行。” 该怎么写呢?

设置DataGridViewDataSource属性,示例如下:

using System.Data;
using System.Data.SqlClient;

namespace WinFormsApp1
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }

        private void Form3_Load(object sender, EventArgs e)
        {
            using var connection = new SqlConnection("Server=(localdb)\\mssqllocaldb;Integrated Security=true;Database=Demo");
            var query = "Select * From Customer";

            var sqlCommand = new SqlCommand(query, connection);
            connection.Open();
            var reader = sqlCommand.ExecuteReader();

            if (reader.HasRows)
            {
                var dt = new DataTable();
                dt.Load(reader);
                dataGridView1.DataSource = dt;
            }
        }
    }
}

数据库中的示例数据如下:

img

示例程序运行效果如下:

img

数据绑定到itemsouece就可以了了。