首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ADOX多步OLE DB操作生成错误

ADOX多步OLE DB操作生成错误
EN

Stack Overflow用户
提问于 2010-07-26 19:59:51
回答 1查看 1.4K关注 0票数 6

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

关闭“允许零长度”的方法效果很好。但是,关闭Unicode压缩的方法根本不起作用,并返回以下异常:

多步OLE DB操作生成错误。如果可用,请检查每个OLE DB状态值。没有做任何工作。

知道怎么解决这个问题吗?

代码语言:javascript
复制
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");
    }                      
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-12 18:52:20

您应该检查字符串中没有适当UNICODE值的字符,这些字符通常在从MS之类的应用程序复制和粘贴文本时引入。具体来说,“聪明的引号”经常引起问题。

还请看一下下面的线程(尽管它在C++中) C++中ADOX属性使用的探讨

您是否能够循环遍历这些属性并显示其当前值?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3338514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档