0

我想使用 ADOX 创建一个新的 MS Access 数据库表。在此页面上,是 VB.NET 中的代码,但显然它在 C# 中不起作用(当我想“转换”代码时)。如果有人正确转换它,我将不胜感激。


在 VB.NET 中是:

     Dim Cn As ADODB.Connection, Cat As ADOX.Catalog, _
                        objTable As ADOX.Table

但是,在 C# 中,没有 ADODB.Connection 方法

这是我的代码,我真的不认为它可以:

        string ConnStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/App_Data/TempDB.mdb") + ";";
        OleDbConnection conn = new OleDbConnection(ConnStr);

        ADOX.Catalog Cat = new ADOX.Catalog();
        ADOX.Table objTable = new ADOX.Table();
        conn.Open();

        Cat.ActiveConnection = conn; //Here is the error message "Specified cast is not valid."

        objTable.Name = "Table2";

        objTable.Columns.Append("ID", DataTypeEnum.adVarChar, 100);

        objTable.Keys.Append("PrimaryKey", KeyTypeEnum.adKeyPrimary, "ID", "Table1", "IDColumn");

        Cat.Tables.Append(objTable);
4

1 回答 1

2

不要忘记在项目中添加对 ADOX 程序集的引用。完成此操作后,C# 代码将如下所示:

using System;
using ADOX;

namespace ConsoleProgram1
{
    public class ConsoleProgram1
    {

        public static void Main(string[] args)
        {

              Catalog cat = new Catalog();

              cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" & _
                 "Data Source=D:\AccessDB\NewMDB.mdb;" & _
                 "Jet OLEDB:Engine Type=5");

              Console.WriteLine("Database Created Successfully")

        }

    }
}

尽管我对 ADOX 的了解仅限于这个问题,但我在您的链接中看到的代码片段并不令人鼓舞。像这cat = Nothing条线这样的东西表明了对 .Net 从 VB6 开始如何改变事物的误解。希望这不会扩展到图书馆。

于 2009-10-22T17:39:46.473 回答