VB.NET -> C # Синтаксические проблемы - PullRequest
0 голосов
/ 22 октября 2009

Я хочу создать новую таблицу базы данных MS Access, используя ADOX. На эта страница - это код в 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 Ответ

2 голосов
/ 22 октября 2009

Не забудьте добавить ссылку на сборку 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. Надеюсь, это не распространяется на библиотеку.

...