获取访问列最大字段大小
本文关键字:字段 访问 获取 | 更新日期: 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
方法之前设置以下属性:DataAdapter
的OledbDataAdapter.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();
}