powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / программно сжать базу Access 2010 силами С#
5 сообщений из 5, страница 1 из 1
программно сжать базу Access 2010 силами С#
    #39385776
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте Уважаемые Гуру!

Подскажите пожалуйста как можно программно сжать базу Access 2010 силами С#

Как это сделать на VB, VBA знаю, а как достучаться на С# не могу нагуглить...

Заранее всем благодарен
...
Рейтинг: 0 / 0
программно сжать базу Access 2010 силами С#
    #39385888
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbit, совсем не найти
P.S.: "Как это сделать на VB, VBA знаю" - абсолютно также...
...
Рейтинг: 0 / 0
программно сжать базу Access 2010 силами С#
    #39386411
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser, спасибо!
А если на клиенте не установлен оффис, то DAO не прокатит?
Я думал, что можно как-нибудь без референсов на библиотеки оффиса
...
Рейтинг: 0 / 0
программно сжать базу Access 2010 силами С#
    #39386498
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arbit, можно... был же пример с Jro
P.S.: а может ну его уже этот аксес?
...
Рейтинг: 0 / 0
программно сжать базу Access 2010 силами С#
    #39387150
Arbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arbit, можно... был же пример с Jro
P.S.: а может ну его уже этот аксес?[/quot]

buser, Приведенный пример из MSDN - под базы .mdb

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
 
/// <summary>
/// MBD compact method (c) 2004 Alexander Youmashev
/// !!IMPORTANT!!
/// !make sure there's no open connections
///    to your db before calling this method!
/// !!IMPORTANT!!
/// </summary>
/// <param name="connectionString">connection string to your db</param>
/// <param name="mdwfilename">FULL name
///     of an MDB file you want to compress.</param>
public static void CompactAccessDB(string connectionString, string mdwfilename)
{
    object[] oParams;

    //create an inctance of a Jet Replication Object
    object objJRO = 
      Activator.CreateInstance(Type.GetTypeFromProgID("JRO.JetEngine"));

    //filling Parameters array
    //cnahge "Jet OLEDB:Engine Type=5" to an appropriate value
    // or leave it as is if you db is JET4X format (access 2000,2002)
    //(yes, jetengine5 is for JET4X, no misprint here)
    oParams = new object[] {
        connectionString,
        "Provider=Microsoft.Jet.OLEDB.4.0;Data" + 
        " Source=C:\\tempdb.mdb;Jet OLEDB:Engine Type=5"};

    //invoke a CompactDatabase method of a JRO object
    //pass Parameters array
    objJRO.GetType().InvokeMember("CompactDatabase",
        System.Reflection.BindingFlags.InvokeMethod,
        null,
        objJRO,
        oParams);

    //database is compacted now
    //to a new file C:\\tempdb.mdw
    //let's copy it over an old one and delete it

    System.IO.File.Delete(mdwfilename);
    System.IO.File.Move("C:\\tempdb.mdb", mdwfilename);

    //clean up (just in case)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(objJRO);
    objJRO=null;
} 


В примере приведена таблица соответствий:

Jet OLEDB:Engine Type Jet x.x Format MDB Files
1 JET10
2 JET11
3 JET2X
4 JET3X
5 JET4X"

Но у меня база .accdb (access 2007-2010)
И Provider=Microsoft.ACE.OLEDB.12.0
Моя строка подключения к сжимаемой базе
Код: c#
1.
string connectionstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\data.accdb;Persist Security Info=False";


Я не могу понять
Какой должна быть строка подключения к временной базе?
и какой тип указывать в моем случае в строке подключения к временной базе вместо примера MSDN:
Код: c#
1.
2.
3.
4.
oParams = new object[] {
        connectionString,
        "Provider=Microsoft.Jet.OLEDB.4.0;Data" + 
        " Source=C:\\tempdb.mdb;Jet OLEDB:Engine Type=5"};



Компилятор на любого провайдера ругается:
Необработанное исключение типа "System.Reflection.TargetInvocationException" в mscorlib.dll
Дополнительные сведения: Exception has been thrown by the target of an invocation.

Заранее благодарен
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / программно сжать базу Access 2010 силами С#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]