gpt4 book ai didi

c# - ADOX 多步 OLE DB 操作产生的错误

转载 作者:太空狗 更新时间:2023-10-29 22:01:52 31 4
gpt4 key购买 nike

我必须编写一个程序来关闭 Access 数据库 (.mdb) 中的所有 Unicode 压缩和所有“允许零长度”。

关闭允许零长度的方法非常有效。但是关闭Unicode压缩的方法根本不起作用,返回如下异常:

Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.

关于如何解决这个问题的任何线索?

private void TurnOffUnicodeCompressionInField(ADOX.CatalogClass catalogClass, String tableName, String field)
{
ADOX.Column column = catalogClass.Tables[tableName].Columns[field];
ADOX.Property prop = column.Properties["Jet OLEDB:Compressed UNICODE Strings"];
prop.Value = true;
}

private void TurnOffAllowZeroLengthInAllFields(ADOX.CatalogClass catalogClass, String tableName)
{
foreach (ADOX.Column column in catalogClass.Tables[tableName].Columns)
column.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
}

private void MyButton_Click(object sender, EventArgs e)
{
String filePath = "";
OpenFileDialog ofd = new OpenFileDialog();
DialogResult result = ofd.ShowDialog();

if (result == DialogResult.OK)
{
filePath = ofd.FileName;
ADOX.CatalogClass catDatabase = new ADOX.CatalogClass();
catDatabase.let_ActiveConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath);

// SoftwareTable
TurnOffAllowZeroLengthInAllFields(catDatabase,"Software");
TurnOffUnicodeCompressionInField(catDatabase, "Software", "Description");
TurnOffUnicodeCompressionInField(catDatabase, "Software", "Name");
}
}

最佳答案

您应该检查您的字符串中没有适当 UNICODE 值的字符,当从 MS Word 等应用程序复制和粘贴文本时,通常会引入这些字符。特别是“智能引号”经常会导致问题。

另请查看以下线程(尽管它是在 C++ 中)Discussion on ADOX Property Usage in C++ .

您是否能够遍历属性并显示它们的当前值?

关于c# - ADOX 多步 OLE DB 操作产生的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3338514/

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