VB.NET - > C#语法问题

时间:2009-10-22 17:24:28

标签: c# vb.net adox

我想使用ADOX创建一个新的MS Access数据库表。在this page上,是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);

1 个答案:

答案 0 :(得分: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改变事物的方式的误解。希望这不会延伸到图书馆。