获取访问列最大字段大小

本文关键字:字段 访问 获取 | 更新日期: 2023-09-27 18:04:31

大家好。我现在有点进退两难。我需要获得你可能进入一个领域的最大字符,但我没有成功,谷歌没有产生任何类似于我需要的东西

这是我的代码

            lvwDestination.Columns.Add("Fields in Database", 150, HorizontalAlignment.Left);
            lvwDestination.Columns.Add("DataType", 100, HorizontalAlignment.Left);
            lvwDestination.Columns.Add("Max", 100, HorizontalAlignment.Left);
            for (int i = 0; i < DataTable.Columns.Count; i++)
            {
                _lvwItem = new ListViewItem(DataTable.Columns[i].ColumnName, 0);
                _lvwItem.Name = DataTable.Columns[i].ColumnName;
                _lvwItem.SubItems.Add(DataTable.Columns[i].DataType.Name.ToString());
               _lvwItem.SubItems.Add(DataTable.Columns[i].MaxLength.ToString());
                lvwDestination.Items.AddRange(new ListViewItem[] { _lvwItem });

            }

现在你可以看到我已经尝试了

_lvwItem.SubItems.Add(DataTable.Columns[i].MaxLength.ToString());

,但是它得到的唯一结果是每一列都是-1。我还确保我的列实际上具有属性字段大小属性。. columnname和. datatype工作完美,但. maxlength总是产生-1。提前感谢任何可能提出解决方案的人。

获取访问列最大字段大小

尝试在调用Fill方法之前设置以下属性:DataAdapterOledbDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey

我对SQL数据库表运行了一个快速测试-看起来MaxLength属性没有从数据库中检索,并且总是将其值设置为-1,除非用户特别设置:

        string sql = "select top 10 * from [TestTable]";
        string connStr = ConfigurationManager.ConnectionStrings["DbConnString"].ConnectionString;
        using (SqlConnection conn = new SqlConnection(connStr))
        {
            SqlCommand cmd = new SqlCommand(sql, conn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable data = new DataTable();
            da.Fill(data);
            foreach (DataColumn col in data.Columns)
            {
                Console.WriteLine(
                    string.Format("{0}'t{1}'t{2}",
                            col.ColumnName,
                            col.DataType.ToString(),
                            col.MaxLength
                        )
                    );
            }
            Console.ReadLine();
        }