Мне нужно создать базу данных доступа (mdb), не используя сборку ADOX interop.Как создать базу данных Microsoft Jet (Access) без сборки interop?
Как это можно сделать?
Мне нужно создать базу данных доступа (mdb), не используя сборку ADOX interop.Как создать базу данных Microsoft Jet (Access) без сборки interop?
Как это можно сделать?
Перед тем, как выбросить этот код, он может, как хорошо жить на 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();
}
Этот код показывает, что вы можете получить доступ к базе данных с помощью OleDbConnection после его создания с помощью COM-компонента ADOX.Catalog.
Вам не нужно Jet (основная головная боль) установлен, если вы используете эту строку подключения в .net 3.5
Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=C:\myFolder\myAccess2007file.accdb;Persist
Security Info=False;
Это должно работать на доступ к 2007 и ниже
Offtopic, вы знаете, работает ли это на X64 ? Является ли это новым для 3.5? –
Это новичок в структуре 3.5. Я не уверен, совместим ли его с x64 или нет. –
Jet 4 установлен на всех версиях Windows с Windows 2000, так почему бы вам не беспокоиться об обходе Jet? ACE не обязательно будет установлен, поэтому я не понимаю, почему вы рекомендуете ACE. Распространяется ли она с помощью среды выполнения .NET 3.5? –
Интересный вопрос - я «Я никогда не думал создать« на лету », как это. Я всегда включал базовую базу данных в качестве ресурса в проект и делал копию, когда мне нужен был новый.
Я сделал то же самое, что и Autsin, создав Access db, а затем включил его в свой проект как управляемый ресурс. После этого он включается в скомпилированный код, и вы можете скопировать его на жесткий диск столько раз, сколько хотите. Пустые базы данных также относительно малы, поэтому накладных расходов не так много.
Добавленный бонус - это возможность настроить базу данных, если вы знаете, как она будет использоваться или какие таблицы будут добавляться каждый раз, вы можете уменьшить количество кодирования и медленные запросы к базе данных.
ACE не в какие рамки (пока, т. Е не в 1, 2, 3,5, 4, 4,5)
Это также не является частью Windows Update.
JET4 является в Framework2 и выше.
Если вы работаете с файлами Access/MDB и т. Д., То не предполагайте, что ACE присутствует.
Я получаю ошибку Invocation в этой строке: 'catType.InvokeMember (« Создать », BindingFlags.InvokeMethod, null, o, new object [] {cnnStr});' – Rashad