首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ADOX创建access db时的数值字段类型给我COMExceptions

使用ADOX创建access db时的数值字段类型给我COMExceptions
EN

Stack Overflow用户
提问于 2016-04-27 09:12:22
回答 1查看 786关注 0票数 1

我试图使用ADOX命名空间创建Access DB ..。

当我为了测试目的将所有字段定义为ADOX.DataTypeEnum.adVarWChar时,一切都很好,但是现在我试图定义整数或十进制(数字类型),我的代码不再工作了……

我遇到的例外是一个恶性循环。

adInteger抛出无效类型异常,adDecimal抛出无效类型异常,adNumeric抛出无效精度异常。

我找不到正确的数据字段的唯一来源!

代码语言:javascript
复制
ADOX.Table table1 = new ADOX.Table();
        ADOX.Key tableKey1 = new Key();
        ADOX.Column idColumn1 = new Column();
        // Define column with AutoIncrement features
        idColumn1.Name = "ID";
        idColumn1.Type = ADOX.DataTypeEnum.adInteger;
        // Set ID as primary key
        tableKey1.Name = "Primary Key";
        tableKey1.Columns.Append("ID");
        tableKey1.Type = KeyTypeEnum.adKeyPrimary;
        //Create the table and it's fields. 
        table1.Name = "Artikli";
        table1.Columns.Append(idColumn1);
        table1.Columns.Append("FLAG", ADOX.DataTypeEnum.adVarWChar, 50);
        table1.Columns.Append("SIFRA", ADOX.DataTypeEnum.adInteger);
        table1.Columns.Append("BARKOD", ADOX.DataTypeEnum.adVarWChar, 50);
        table1.Columns.Append("NAZIV", ADOX.DataTypeEnum.adVarWChar, 50);
        table1.Columns.Append("JM", ADOX.DataTypeEnum.adVarWChar, 50);
        table1.Columns.Append("TB", ADOX.DataTypeEnum.adNumeric);
        table1.Columns.Append("MPC", ADOX.DataTypeEnum.adNumeric);
        table1.Columns.Append("VPC", ADOX.DataTypeEnum.adNumeric);
        table1.Columns.Append("NC", ADOX.DataTypeEnum.adNumeric);
        table1.Columns.Append("ZALIHE", ADOX.DataTypeEnum.adInteger);
        table1.Columns.Append("RG", ADOX.DataTypeEnum.adVarWChar, 50);
        table1.Columns.Append("KALO", ADOX.DataTypeEnum.adInteger);


cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + "; Jet OLEDB:Engine Type=5");

            // Must create database file before applying autonumber to column
            idColumn.ParentCatalog = cat;
            idColumn.Properties["AutoIncrement"].Value = true;
            idColumn1.ParentCatalog = cat;
            idColumn1.Properties["AutoIncrement"].Value = true;
            idColumn2.ParentCatalog = cat;
            idColumn2.Properties["AutoIncrement"].Value = true;
            idColumn3.ParentCatalog = cat;
            idColumn3.Properties["AutoIncrement"].Value = true;
            idColumn4.ParentCatalog = cat;
            idColumn4.Properties["AutoIncrement"].Value = true;
            idColumn5.ParentCatalog = cat;
            idColumn5.Properties["AutoIncrement"].Value = true;
            idColumn6.ParentCatalog = cat;
            idColumn6.Properties["AutoIncrement"].Value = true;
            idColumn7.ParentCatalog = cat;
            idColumn7.Properties["AutoIncrement"].Value = true;
            idColumn8.ParentCatalog = cat;
            idColumn8.Properties["AutoIncrement"].Value = true;

            cat.Tables.Append(table);
            cat.Tables.Append(table1); // throws exception
            cat.Tables.Append(table2);
            cat.Tables.Append(table3);
            cat.Tables.Append(table4);
            cat.Tables.Append(table5);
            cat.Tables.Append(table6);
            cat.Tables.Append(table7);
            cat.Tables.Append(table8);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-27 09:56:11

结果我得为数字类型定义精度..。这是语法,但如果有人知道更简单的语法,请分享。

代码语言:javascript
复制
ADOX.Column numeric = new Column();
        numeric.Name = "TB";
        numeric.Type = ADOX.DataTypeEnum.adNumeric;
        numeric.Precision = 17;

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

https://stackoverflow.com/questions/36885322

复制
相关文章

相似问题

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