2011-01-24 49 views

Respuesta

15

La respuesta más sencilla es insertar un archivo .mdb/.accdb vacío en su programa y escribirlo en el disco.

La respuesta correcta es utilizar la interoperabilidad COM con la biblioteca ADOX:

var cat = new ADOX.Catalog() 
cat.Create(connectionString); 

Recuerde que debe generar sus cadenas de conexión usando OleDbConnectionStringBuilder.

+3

Sugerencia: La "biblioteca ADOX" se puede encontrar como "Microsoft ADO Ext. 6.0 para DDL y seguridad" en mi máquina – Matthias

9

Probar:

using ADOX; //Requires Microsoft ADO Ext. 2.8 for DDL and Security 
using ADODB; 

public bool CreateNewAccessDatabase(string fileName) 
{ 
bool result = false; 

ADOX.Catalog cat = new ADOX.Catalog(); 
ADOX.Table table = new ADOX.Table(); 

//Create the table and it's fields. 
table.Name = "Table1"; 
table.Columns.Append("Field1"); 
table.Columns.Append("Field2"); 

try 
{ 
    cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + "; Jet OLEDB:Engine Type=5"); 
    cat.Tables.Append(table); 

    //Now Close the database 
    ADODB.Connection con = cat.ActiveConnection as ADODB.Connection; 
    if (con != null) 
    con.Close(); 

    result = true; 
} 
catch (Exception ex) 
{ 
    result = false; 
} 
cat = null; 
return result; 
} 

http://zamirsblog.blogspot.com/2010/11/creating-access-database.html

9

En mi ordenador, Windows 7 SP1 Professional de 64 bits, me encontré con Microsoft ADO Ext. 2.8 para DDL y seguridad en C: \ Archivos de programa \ Archivos comunes \ System \ ado \ msadox28.dll.

También se encuentra como referencia:

que se incluye como ADOX en las referencias

enter image description here

Por defecto, las columnas se crean como texto [ 255]. Aquí hay algunos ejemplos para crear columnas como diferentes tipos de datos.

table.Columns.Append("PartNumber", ADOX.DataTypeEnum.adVarWChar, 6); // text[6] 
table.Columns.Append("AnInteger", ADOX.DataTypeEnum.adInteger); // Integer 

me encontré con esta lista de tipos de datos para crear y leer los campos de base de datos de acceso

acceso a texto = adVarWChar

Memo acceso = adLongVarWChar

acceso Numérico Byte = adUnsignedTinyInt

Número entero de acceso numérico = adSmallInt

acceso numérico entero largo = adInteger

acceso numérico de precisión simple = adSingle

acceso numérico de doble precisión = adDouble

acceso numérico Replicatie-id = adGuid

acceso numérico decimal = adNumeric

Fecha/hora de acceso = adDate

acceso monetaria = adCurrency

acceso Autonumérico = adInteger

acceso Sí/No = adBoolean

acceso HyperLink = adLongVarWChar

+1

Comentario anotado. Solo siguiendo el comentario de Zamir. –

+0

Sólo una nota muy tardía sobre el hecho de que si desea crear una columna de Autonumérico debe establecer el valor 'AutoIncrement' en verdadero. Esto sucede después de crear el catálogo, donde establece el 'ParentCatalog' para la columna como su catálogo, luego establece las propiedades de la columna' 'AutoIncrement"]. Value' en 'true' –

Cuestiones relacionadas