Как создать базу данных Microsoft Access на С# программно?

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

Ответы

Ответ 1

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

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

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

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

Ответ 2

Попробуйте:

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 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

Ответ 3

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

Он также находится в качестве ссылки:

enter image description here

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

enter image description here

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

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

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

Доступ к тексту = adVarWChar

Access Memo = adLongVarWChar

Доступ к числовому байту = adUnsignedTinyInt

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

Доступ к числовому длинному целому числу = adInteger

Access Numeric Single Precision = adSingle

Доступ к числовой двойной точности = adDouble

Access Numeric Replicatie-id = adGuid

Доступ к числовому десятичному значению = adNumeric

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

Доступ к валюте = adCurrency

Access AutoNumber = adInteger

Доступ Да/Нет = adBoolean

Доступ к HyperLink = adLongVarWChar