2011-01-24 4 views
14

Как создать файл базы данных Microsoft Access на C#, если он еще не существует?Как создать базу данных Microsoft Access на C# программно?

+0

Есть ли у нее быть доступ, или вы ищете файл основанного на базе данных для хранения данных? SQLite приятный и портативный, если это все, что вам нужно. – jlafay

+0

Да, теперь я использую SQLite на Android. –

ответ

15

Самый простой ответ - вставить пустой пустой файл .mdb/.accdb в свою программу и записать его на диск.

Правильный ответ заключается в использовании COM Interop с библиотекой ADOX:

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

Не забудьте сгенерировать строки подключения с помощью OleDbConnectionStringBuilder.

+3

Подсказка: «Библиотека ADOX» может быть найдена как «Microsoft ADO Ext. 6.0 для DDL и безопасности» на моей машине – Matthias

9

Try:

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

На моем компьютере, Windows 7 sp1 Professional 64-разрядная, я нашел Microsoft ADO Ext. 2.8 для DDL и безопасности в C: \ Program Files \ Common Files \ System \ ado \ msadox28.dll.

Встречается также в качестве справки:

, который включен в качестве ADOX в ссылках

enter image description here

По умолчанию столбцы создаются в виде текста [ 255]. Вот несколько примеров создания столбцов как разных типов данных.

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

Я нашел этот список типов данных для создания и чтения полей доступа к базе данных

Access Text = adVarWChar

Access Memo = adLongVarWChar

доступа Числовой Байт = adUnsignedTinyInt

Доступ Числовое целое число = adSmallInt

доступа Числовой Длинное целое = adInteger

доступа Числовой Single Precision = adSingle

доступа Числовой двойной точности = adDouble

доступа Числовой Replicatie-ID = adGuid

доступа Числовой Decimal = adNumeric

Дата доступа/время = adDate

доступ Валюта = adCurrency

Доступ AutoNumber = adInteger

Access Да/Нет = adBoolean

Доступ HyperLink = adLongVarWChar

+1

Комментарий отмечен. Просто следите за комментарием Замира. –

+0

Просто очень поздняя заметка о том, что если вы хотите создать столбец AutoNumber, вы должны установить значение «AutoIncrement» равным true. Это происходит после создания Каталога, где вы устанавливаете «ParentCatalog» для столбца в качестве вашего каталога, а затем устанавливаете «Свойства [AutoIncrement» в столбце]. Значение 'to' true' –

Смежные вопросы