2011-01-24 13 views

risposta

15

La risposta più semplice è incorporare un file vuoto .mdb/.accdb nel programma e scriverlo su disco.

La risposta corretta è quello di utilizzare interoperabilità COM con la libreria ADOX:

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

Ricordati di generare le stringhe di connessione utilizzando OleDbConnectionStringBuilder.

+3

Suggerimento: la "libreria ADOX" può essere trovata come "Microsoft ADO Ext. 6.0 per DDL e sicurezza" sulla mia macchina – Matthias

9

Prova:

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

Sul mio computer, Windows 7 Professional SP1 64-bit, ho trovato Microsoft ADO Ext. 2.8 per DDL e sicurezza in C: \ Programmi \ File comuni \ System \ ado \ msadox28.dll.

Si trova anche come punto di riferimento:

che è incluso come ADOX nei riferimenti

enter image description here

Per impostazione predefinita, le colonne vengono create come testo [ 255]. Ecco alcuni esempi per creare colonne come tipi di dati diversi.

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

ho trovato questo elenco di tipi di dati per la creazione e l'accesso in lettura campi del database

accesso al testo = adVarWChar

Memo accesso = adLongVarWChar

di accesso numerici Byte = adUnsignedTinyInt

Accesso numerico intero = adSmallInt

accesso numerico intero lungo = adInteger

di accesso numerici singola precisione = adSingle

di accesso numerici a precisione doppia = adDouble

di accesso numerici Replicatie-id = adGuid

accesso numerico decimale = adNumeric

Accesso Data/ora = ad data

Accesso valuta = adCurrency

accesso contatore = adInteger

Accesso Sì/No = adBoolean

accesso HyperLink = adLongVarWChar

+1

Commento annotato. Basta seguire il commento di Zamir. –

+0

Solo una nota molto tarda sul fatto che se si desidera creare una colonna di numero di selezione automatica è necessario impostare il valore 'AutoIncrement' su true. Questo succede dopo aver creato il catalogo, dove si imposta 'ParentCatalog' per la colonna come catalogo, quindi si imposta' Properties ["AutoIncrement"] della colonna. Value' a 'true' –

Problemi correlati