如何在没有互操作程序集的情况下创建Microsoft Jet(Access)数据库?

Sam*_*ron 5 c# interop jet

我需要在不使用ADOX互操作程序集的情况下创建访问(mdb)数据库.

如何才能做到这一点?

Sam*_*ron 10

在我丢弃这段代码之前,它也可能存在于stackoverflow上

沿着这些方向的东西似乎可以解决问题:

if (!File.Exists(DB_FILENAME))
{
    var cnnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DB_FILENAME;

    // Use a late bound COM object to create a new catalog. This is so we avoid an interop assembly. 
    var catType = Type.GetTypeFromProgID("ADOX.Catalog");
    object o = Activator.CreateInstance(catType);
    catType.InvokeMember("Create", BindingFlags.InvokeMethod, null, o, new object[] {cnnStr});

    OleDbConnection cnn = new OleDbConnection(cnnStr);
    cnn.Open();
    var cmd = cnn.CreateCommand();
    cmd.CommandText = "CREATE TABLE VideoPosition (filename TEXT , pos LONG)";
    cmd.ExecuteNonQuery();

}
Run Code Online (Sandbox Code Playgroud)

此代码说明了使用OleDbConnection在使用ADOX.Catalog COM组件创建数据库后可以访问数据库.