2008-10-01 3 views

ответ

10

Перед тем, как выбросить этот код, он может, как хорошо жить на 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.

+0

Я получаю ошибку Invocation в этой строке: 'catType.InvokeMember (« Создать », BindingFlags.InvokeMethod, null, o, new object [] {cnnStr});' – Rashad

0

Вам не нужно Jet (основная головная боль) установлен, если вы используете эту строку подключения в .net 3.5

Provider=Microsoft.ACE.OLEDB.12.0;Data 
Source=C:\myFolder\myAccess2007file.accdb;Persist 
Security Info=False; 

Это должно работать на доступ к 2007 и ниже

+0

Offtopic, вы знаете, работает ли это на X64 ? Является ли это новым для 3.5? –

+0

Это новичок в структуре 3.5. Я не уверен, совместим ли его с x64 или нет. –

+0

Jet 4 установлен на всех версиях Windows с Windows 2000, так почему бы вам не беспокоиться об обходе Jet? ACE не обязательно будет установлен, поэтому я не понимаю, почему вы рекомендуете ACE. Распространяется ли она с помощью среды выполнения .NET 3.5? –

0

Интересный вопрос - я «Я никогда не думал создать« на лету », как это. Я всегда включал базовую базу данных в качестве ресурса в проект и делал копию, когда мне нужен был новый.

1

Я сделал то же самое, что и Autsin, создав Access db, а затем включил его в свой проект как управляемый ресурс. После этого он включается в скомпилированный код, и вы можете скопировать его на жесткий диск столько раз, сколько хотите. Пустые базы данных также относительно малы, поэтому накладных расходов не так много.

Добавленный бонус - это возможность настроить базу данных, если вы знаете, как она будет использоваться или какие таблицы будут добавляться каждый раз, вы можете уменьшить количество кодирования и медленные запросы к базе данных.

0

ACE не в какие рамки (пока, т. Е не в 1, 2, 3,5, 4, 4,5)

Это также не является частью Windows Update.

JET4 является в Framework2 и выше.

Если вы работаете с файлами Access/MDB и т. Д., То не предполагайте, что ACE присутствует.

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