首页 > 解决方案 > 获取所有列计数并将数字存储在变量中

问题描述

我想在数据库中的 3 个表中搜索 paname 等于 text 之后,我使用 GetSchema 计算这些表中的列号以在 for 循环语句中使用它,但 getShema 总是打印 28 而不是实际列号。

我在所有这些表中有 50 列

            con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=labx.accdb";

            con.Open();

            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = con;

            cmd.CommandText = "SELECT hema.*,bioche.*,immuni.* FROM [hema],[bioche],[immuni] WHERE hema.paname = @paname AND bioche.paname = @paname AND immuni.paname = @paname";

            cmd.Parameters.AddWithValue("@paname", textBox2.Text);
            OleDbDataReader dr = cmd.ExecuteReader();

            int cont = 0;

            var colCount= con.GetSchema("columns").Columns.Count; // Get the numbers of columns 

            MessageBox.Show(tables.ToString()); // print the count of these columns in a massageBox

            while (dr.Read())
            { 
                   src searchfrm = new src();
                   searchfrm.Show();

                   

                if (cont == 0)
                {
                    searchfrm.textBox1.Text = dr[0].ToString();
                    searchfrm.textBox2.Text = dr[1].ToString();

                    for (int x = 0; x < 50; x++) // i want to use colCount here instead of 50
                    {
                       if (dr[x].ToString().Trim() != "")searchfrm.textBox3.Text += dr[x].ToString() + System.Environment.NewLine;

                    }

                }

            }

            con.Close();
        
        
        }

标签: c#ms-accessschema

解决方案


要获取结果中的列数,您可以简单地使用 dr.Columns.Count – Klaus Gütter评论


推荐阅读