首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在adox中设置表列的自动增量属性?

如何在adox中设置表列的自动增量属性?
EN

Stack Overflow用户
提问于 2015-05-21 15:38:44
回答 2查看 1.7K关注 0票数 0

正如我在标题中解释的那样,我不能将属性设置为列:

代码语言:javascript
复制
Catalog cat = new Catalog();
        Table tableCustomer = new Table();
        Table tableAddresses = new Table();

        try
        {                
            //Create the table Customer and it's fields. 
            tableCustomer.Name = "Customer";
            tableCustomer.Columns.Append("Customer_ID", ADOX.DataTypeEnum.adInteger);
            //column.ParentCatalog = cat;
            //column.Name = "Customer_ID";
            //column.Type = ADOX.DataTypeEnum.adInteger;
            //column.Properties["AutoIncrement"].Value = true;

            //tableCustomer.Columns.Append(column);

            tableCustomer.Keys.Append("PrimaryKEy", KeyTypeEnum.adKeyPrimary, "Customer_ID");
            tableCustomer.Columns["Customer_ID"].Properties["AutoIncrement"].Value = true;
            tableCustomer.Columns.Append("Name", ADOX.DataTypeEnum.adVarWChar, 50);
            tableCustomer.Columns.Append("Email", ADOX.DataTypeEnum.adVarWChar, 50);
            tableCustomer.Columns.Append("TelNumber", ADOX.DataTypeEnum.adVarWChar, 32);
            tableCustomer.Columns.Append("Fax", ADOX.DataTypeEnum.adVarWChar, 32);
            tableCustomer.Columns.Append("AdressCounter", ADOX.DataTypeEnum.adSmallInt);

            tableAddresses.Name = "Addresses";
            tableAddresses.Columns.Append("Address_ID", ADOX.DataTypeEnum.adInteger);
            tableAddresses.Keys.Append("PrimaryKEy", KeyTypeEnum.adKeyPrimary, "Address_ID");
            tableAddresses.Columns.Append("Customer_ID", ADOX.DataTypeEnum.adInteger);
            tableAddresses.Keys.Append("ForeignKey", KeyTypeEnum.adKeyForeign, "Customer_ID", "Customer", "Customer_ID");
            tableAddresses.Columns.Append("Street", ADOX.DataTypeEnum.adVarWChar, 50);
            tableAddresses.Columns.Append("PostalCode", ADOX.DataTypeEnum.adVarWChar, 10);
            tableAddresses.Columns.Append("City", ADOX.DataTypeEnum.adVarWChar, 50);

            cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Application.StartupPath
                + "\\Customers.mdb" + "; Jet OLEDB:Engine Type=5");
            cat.Tables.Append(tableCustomer);
            cat.Tables.Append(tableAddresses);


            //Now Close the database
            ADODB.Connection con = cat.ActiveConnection as ADODB.Connection;
            if (con != null)
                con.Close();


            result = true;
        }
        catch (Exception ex)
        {
            result = false;
        }
        finally
        {
            if (!result)
            {
                ADODB.Connection con = cat.ActiveConnection as ADODB.Connection;
                if (con != null)
                    con.Close();
                File.Delete(Application.StartupPath + "\\Customers.mdb");
            }                 
        }
        cat = null;

我正在收到一个错误,即在执行以下行后未找到对象:

代码语言:javascript
复制
tableCustomer.Columns["Customer_ID"].Properties["AutoIncrement"].Value = true;

错误是找不到对象。但在vb中的所有解决方案中,它们都像我所写的那样解决它。我做错什么了?

EN

回答 2

Stack Overflow用户

发布于 2015-05-21 16:23:19

您需要为希望设置属性的列设置ParentCatalog

代码语言:javascript
复制
tableCustomer.Keys.Append("PrimaryKEy", KeyTypeEnum.adKeyPrimary, "Customer_ID");
tableCustomer.Columns["Customer_ID"].ParentCatalog = cat;
tableCustomer.Columns["Customer_ID"].Properties["AutoIncrement"].Value = true;
票数 1
EN

Stack Overflow用户

发布于 2015-05-21 17:56:14

你们的回答都是对的。但是,目录必须在此之前创建。以下是修改后的版本:

代码语言:javascript
复制
Catalog cat = new Catalog();
        Table tableCustomer = new Table();
        Table tableAddresses = new Table();

        cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Application.StartupPath
          + "\\Customers.mdb" + "; Jet OLEDB:Engine Type=5");

        ADODB.Connection con = new Connection();
        string connString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source="
            + Application.StartupPath + "\\Customers.mdb";

        try
        {
            con.Open(connString);
            cat.ActiveConnection = con;

            //Create the table Customer and it's fields. 
            tableCustomer.Name = "Customer";
            tableCustomer.Columns.Append("Customer_ID", ADOX.DataTypeEnum.adInteger);
            tableCustomer.Keys.Append("PrimaryKEy", KeyTypeEnum.adKeyPrimary, "Customer_ID");
            tableCustomer.Columns["Customer_ID"].ParentCatalog = cat;
            tableCustomer.Columns["Customer_ID"].Properties["AutoIncrement"].Value = true;
            tableCustomer.Columns.Append("Name", ADOX.DataTypeEnum.adVarWChar, 50);
            tableCustomer.Columns.Append("Email", ADOX.DataTypeEnum.adVarWChar, 50);
            tableCustomer.Columns.Append("TelNumber", ADOX.DataTypeEnum.adVarWChar, 32);
            tableCustomer.Columns.Append("Fax", ADOX.DataTypeEnum.adVarWChar, 32);
            tableCustomer.Columns.Append("AdressCounter", ADOX.DataTypeEnum.adSmallInt);

            tableAddresses.Name = "Addresses";
            tableAddresses.Columns.Append("Address_ID", ADOX.DataTypeEnum.adInteger);
            tableAddresses.Keys.Append("PrimaryKEy", KeyTypeEnum.adKeyPrimary, "Address_ID");
            tableAddresses.Columns["Address_ID"].ParentCatalog = cat;
            tableAddresses.Columns["Address_ID"].Properties["AutoIncrement"].Value = true;
            tableAddresses.Columns.Append("Customer_ID", ADOX.DataTypeEnum.adInteger);
            tableAddresses.Keys.Append("ForeignKey", KeyTypeEnum.adKeyForeign, "Customer_ID", "Customer", "Customer_ID");
            tableAddresses.Columns.Append("Street", ADOX.DataTypeEnum.adVarWChar, 50);
            tableAddresses.Columns.Append("PostalCode", ADOX.DataTypeEnum.adVarWChar, 10);
            tableAddresses.Columns.Append("City", ADOX.DataTypeEnum.adVarWChar, 50);

            //cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Application.StartupPath
            //    + "\\Customers.mdb" + "; Jet OLEDB:Engine Type=5");
            cat.Tables.Append(tableCustomer);
            cat.Tables.Append(tableAddresses);


            //Now Close the database
            //ADODB.Connection con = cat.ActiveConnection as ADODB.Connection;
            if (con != null)
                con.Close();


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

https://stackoverflow.com/questions/30378351

复制
相关文章

相似问题

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