我想使用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);
答案 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改变事物的方式的误解。希望这不会延伸到图书馆。