gpt4 book ai didi

c# - ADOX 表列的 "Nullable"属性?

转载 作者:行者123 更新时间:2023-11-30 15:39:04 26 4
gpt4 key购买 nike

我正在尝试使用 C# 创建一个 Access 文件 (.mdb)。我正在为遗留流程从 SQL 导出数据。我让它工作了,我面临的唯一问题是将列设置为可为空。

这是我所拥有的(为简洁起见删除了大部分列):

private void CreateAndExportLegacyFile(DataTable data, string exportFilename)
{
var connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;";
connectionString += "Data Source=" + exportFilename + ";Jet OLEDB:Engine Type=5";

var catalog = new Catalog();
catalog.Create(connectionString);

var table = new Table { Name = "Main" };

#region Column mapping
table.Columns.Append("ID", DataTypeEnum.adVarWChar, 50);
table.Columns.Append("FIRST", DataTypeEnum.adVarWChar, 50);
table.Columns.Append("LAST", DataTypeEnum.adVarWChar, 50);
#endregion

foreach (Column column in table.Columns)
{
if (column.Name != "ID") column.Properties["Nullable"].Value = true;
}

catalog.Tables.Append(table);

Marshal.FinalReleaseComObject(table);
Marshal.FinalReleaseComObject(catalog.Tables);
Marshal.FinalReleaseComObject(catalog.ActiveConnection);
Marshal.FinalReleaseComObject(catalog);
}

尝试设置“可空”属性时出现以下错误:“无法在与请求的名称或序号对应的集合中找到项目。”

我发现关于使用 Required 还是 Nullable 的报告相互矛盾,但我都尝试过并得到相同的结果。

知道为什么我无法设置可空属性吗?我可能只是懒惰,在提取数据时将空值默认为空格,但我希望尽可能避免这种情况。

编辑:正如 Hans 在评论中提到的,我不得不改用 Attributes 属性:

if (column.Name != "ID") column.Attributes = ColumnAttributesEnum.adColNullable;

最佳答案

Hans Passant 在评论中回答了这个问题,但从未将其添加为答案。现在这样做以将其标记为已回答。必须使用 Attributes 属性:

if (column.Name != "ID") column.Attributes = ColumnAttributesEnum.adColNullable;

关于c# - ADOX 表列的 "Nullable"属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10825173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com