Риторический вопрос
От: Аноним  
Дата: 06.10.02 12:05
Оценка:
Я ТУПОЙ, ИЛИ НЕВНИМАТЕЛЬНЫЙ?
Или, просто, все остальные боятся признать свою непросвещенность?
В форуме неоднократно поднимался вопрос о том как можно (и можно ли вообще) програмно создать на диске файл локальной (настольной или как там ее еще, чтобы понятнее) базы данных.
Я лично пишу на VC++, С базами общаюсь посредством OLE DB.
Кто-нибудь! наберитесь духа и напишите: "ЭТОГО СДЕЛАТЬ НЕЛЬЗЯ! " или: "Я НЕ ЗНАЮ КАК ЭТО СДЕЛАТЬ "
Получить какой-нибудь полезный совет я уже отчаялся ...
Re: Риторический вопрос
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 06.10.02 12:10
Оценка:
Здравствуйте Аноним, Вы писали:

А>В форуме неоднократно поднимался вопрос о том как можно (и можно ли вообще) програмно создать на диске файл локальной (настольной или как там ее еще, чтобы понятнее) базы данных.

А>Я лично пишу на VC++, С базами общаюсь посредством OLE DB.
А>Кто-нибудь! наберитесь духа и напишите: "ЭТОГО СДЕЛАТЬ НЕЛЬЗЯ! " или: "Я НЕ ЗНАЮ КАК ЭТО СДЕЛАТЬ "
А>Получить какой-нибудь полезный совет я уже отчаялся ...

Хм. IDBDataSourceAdmin смотрел ?
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re: Риторический вопрос
От: Алекс Россия http://wise-orm.com
Дата: 06.10.02 12:12
Оценка:
Здравствуйте Аноним, Вы писали:

А>Я ТУПОЙ, ИЛИ НЕВНИМАТЕЛЬНЫЙ?


Мне кажется второе, хотя вообще связные понятия.

[]

А>Кто-нибудь! наберитесь духа и напишите: "ЭТОГО СДЕЛАТЬ НЕЛЬЗЯ! " или: "Я НЕ ЗНАЮ КАК ЭТО СДЕЛАТЬ "

А>Получить какой-нибудь полезный совет я уже отчаялся ...

Зачем же так сильно кричать, мы не глухие. Try this
    Dim cat As New ADOX.Catalog
    cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\new.mdb"


Предварительно нужно поставить ссылку на MS ADO Extention (msadox.dll).

На VC действуешь подобным образом. (Хинт: сотри в сторону #import)
Re[2]: Риторический вопрос
От: Аноним  
Дата: 06.10.02 12:21
Оценка:
Здравствуйте Коваленко Дмитрий, Вы писали:

КД>Хм. IDBDataSourceAdmin смотрел ?


Спасибо за оперативность.
Смотрел, а это помогает? Я даже запустить чего-то пробовал, только не получилось, не помню толи не понял как, толи вообще ничего не понял, если я вообще понятно выражаюсь...
Re[3]: Риторический вопрос
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 06.10.02 12:29
Оценка:
Здравствуйте Аноним, Вы писали:

КД>>Хм. IDBDataSourceAdmin смотрел ?

А>Смотрел, а это помогает? Я даже запустить чего-то пробовал, только не получилось, не помню толи не понял как, толи вообще ничего не понял, если я вообще понятно выражаюсь...

Должно помогать. Потому что этот интерфейс для создания.разрушения баз данных и предназначен.
Правда, лично я еще ни разу этот интерфейс не использовал — потому что точно знаю что мой OLEDB провайдер пока его не поддерживает

Вообщем, читай описание IDBDataSourceAdmin и мучай свой провайдер
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[2]: Риторический вопрос
От: Аноним  
Дата: 06.10.02 12:31
Оценка:
Здравствуйте Алекс, Вы писали:

А>Зачем же так сильно кричать, мы не глухие. Try this

А>
А>    Dim cat As New ADOX.Catalog
А>    cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\new.mdb"
А>


А>Предварительно нужно поставить ссылку на MS ADO Extention (msadox.dll).


А>На VC действуешь подобным образом. (Хинт: сотри в сторону #import)


Спасибо, Только ADO у меня с хелпами под ВАСИК и в СИ ни одного Н-файла, с таким багажом проще застрелиться
Re[4]: Риторический вопрос
От: Аноним  
Дата: 06.10.02 12:34
Оценка:
Здравствуйте Коваленко Дмитрий, Вы писали:

КД>Здравствуйте Аноним, Вы писали:


КД>>>Хм. IDBDataSourceAdmin смотрел ?

А>>Смотрел, а это помогает? Я даже запустить чего-то пробовал, только не получилось, не помню толи не понял как, толи вообще ничего не понял, если я вообще понятно выражаюсь...

КД>Должно помогать. Потому что этот интерфейс для создания.разрушения баз данных и предназначен.

КД>Правда, лично я еще ни разу этот интерфейс не использовал — потому что точно знаю что мой OLEDB провайдер пока его не поддерживает

КД>Вообщем, читай описание IDBDataSourceAdmin и мучай свой провайдер


Ладно, пострадаю еще пару дней авось получится, а потом, как говорится, помоюсь и в горы...
Re[3]: Риторический вопрос
От: Алекс Россия http://wise-orm.com
Дата: 07.10.02 03:59
Оценка:
Здравствуйте Аноним, Вы писали:

А>Здравствуйте Алекс, Вы писали:


[]

А>Спасибо, Только ADO у меня с хелпами под ВАСИК и в СИ ни одного Н-файла, с таким багажом проще застрелиться


Это не ADO, а ADOX. А во-вторых, если нет заголовков смотри директиву #import!
Re[4]: Риторический вопрос
От: Аноним  
Дата: 07.10.02 19:24
Оценка:
Здравствуйте Алекс, Вы писали:

А>Это не ADO, а ADOX. А во-вторых, если нет заголовков смотри директиву #import!


Ладно, спасибо за совет, если ничего не останется, буду копать в эту сторону
Re[4]: Риторический вопрос
От: Аноним  
Дата: 07.10.02 19:39
Оценка:
Здравствуйте Коваленко Дмитрий, Вы писали:

КД>Должно помогать. Потому что этот интерфейс для создания.разрушения баз данных и предназначен.

КД>Правда, лично я еще ни разу этот интерфейс не использовал — потому что точно знаю что мой OLEDB провайдер пока его не поддерживает

КД>Вообщем, читай описание IDBDataSourceAdmin и мучай свой провайдер


Я попробовал и у меня НЕ ПОЛУЧИЛОСЬ!
Вообще то я в СОМ, мягко говоря, не силен, но моего скудного ума хватает на то чтобы допереть что в приведенном ниже коде открываются (должны) два интерфейса одного СОМ-объекта (или я ошибаюсь?)


    HRESULT hr;
///////////////////////////////////////////////////////////////////////////////////    
    IDBInitialize *pIDBInitialize  = NULL;
    hr = CoCreateInstance(CLSID_MSDASQL, NULL, CLSCTX_INPROC_SERVER,
        IID_IDBInitialize,(void**)&pIDBInitialize);
///////////////////////////////////////////////////////////////////////////////////    
    IDBDataSourceAdmin *pDBDataSourceAdmin = NULL;
    hr = CoCreateInstance(CLSID_MSDASQL, NULL, CLSCTX_INPROC_SERVER,
        IID_IDBDataSourceAdmin, (void**) &pDBDataSourceAdmin);


Первый фрагмет я содрал, второй — состряпал по образу и подобию первого. Как и следовало ожидать: первый проходит на ура (hr = 0) , а со вторым полный провал.
В чем проблема?
Re[5]: Риторический вопрос
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 08.10.02 06:41
Оценка:
Здравствуйте Аноним, Вы писали:

А>

А>    HRESULT hr;
А>///////////////////////////////////////////////////////////////////////////////////    
А>    IDBInitialize *pIDBInitialize  = NULL;
А>    hr = CoCreateInstance(CLSID_MSDASQL, NULL, CLSCTX_INPROC_SERVER,
А>        IID_IDBInitialize,(void**)&pIDBInitialize);
А>///////////////////////////////////////////////////////////////////////////////////    
А>    IDBDataSourceAdmin *pDBDataSourceAdmin = NULL;
А>    hr = CoCreateInstance(CLSID_MSDASQL, NULL, CLSCTX_INPROC_SERVER,
А>        IID_IDBDataSourceAdmin, (void**) &pDBDataSourceAdmin);

А>


А>Первый фрагмет я содрал, второй — состряпал по образу и подобию первого. Как и следовало ожидать: первый проходит на ура (hr = 0) , а со вторым полный провал.

А>В чем проблема?

Это значит, что MSDASQL его не поддерживает.
Вообще MSDASQL — это OLEDB для ODBC. То есть типа универсальный провайдер. И вряд ли эта универсальность распространяется на возможность создания баз данных.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re: Риторический вопрос
От: Максим Алексейкин Россия  
Дата: 08.10.02 16:58
Оценка: 1 (1)
Здравствуйте Аноним, Вы писали:
[...]

А еще можно в ресурсы запихать файл BD, а потом его на диск записывать. Это где то в MSDN советовали.
ICQ #311116826
Re[6]: Риторический вопрос
От: Grumbler  
Дата: 08.10.02 17:13
Оценка:
Здравствуйте Коваленко Дмитрий, Вы писали:

КД>Это значит, что MSDASQL его не поддерживает.

КД>Вообще MSDASQL — это OLEDB для ODBC. То есть типа универсальный провайдер. И вряд ли эта универсальность распространяется на возможность создания баз данных.

А что можно попробовать ещё?
Re[2]: Риторический вопрос
От: Grumbler  
Дата: 08.10.02 19:27
Оценка:
Здравствуйте Максим Алексейкин, Вы писали:

МА>А еще можно в ресурсы запихать файл BD, а потом его на диск записывать. Это где то в MSDN советовали.


Приложение немного раздеует, а, вообще, мысль интересная, где бы по-подробнее почитать?

Да, и не обращайте внимания на имя автора, это я зарегистрировался...
Re[7]: Риторический вопрос
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 09.10.02 05:57
Оценка:
Здравствуйте Grumbler, Вы писали:

G>Здравствуйте Коваленко Дмитрий, Вы писали:


КД>>Это значит, что MSDASQL его не поддерживает.

КД>>Вообще MSDASQL — это OLEDB для ODBC. То есть типа универсальный провайдер. И вряд ли эта универсальность распространяется на возможность создания баз данных.

G>А что можно попробовать ещё?


Вспомнил — через мой провайдер все таки можно создать/уничтожить базу данных. Через SQL типа —
"CREATE DATABASE ..."
и
"DROP DATABASE ..."


Так что если ODBC драйвер такие запросы переваривает — можно попробовать. Хотя я в ODBC ни бельмеса не понимаю, так что здесь могу пороть чушь
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re: Риторический вопрос
От: Аноним  
Дата: 09.10.02 09:57
Оценка:
Здравствуйте Аноним, Вы писали:

А>Я ТУПОЙ, ИЛИ НЕВНИМАТЕЛЬНЫЙ?

А>Или, просто, все остальные боятся признать свою непросвещенность?
А>В форуме неоднократно поднимался вопрос о том как можно (и можно ли вообще) програмно создать на диске файл локальной (настольной или как там ее еще, чтобы понятнее) базы данных.
А>Я лично пишу на VC++, С базами общаюсь посредством OLE DB.
А>Кто-нибудь! наберитесь духа и напишите: "ЭТОГО СДЕЛАТЬ НЕЛЬЗЯ! " или: "Я НЕ ЗНАЮ КАК ЭТО СДЕЛАТЬ "
А>Получить какой-нибудь полезный совет я уже отчаялся ...

Если тебе извесна структура своей базы, то попробуй так: создай утилитами эту самую базу. Она будет соответственно пустая. Потом просто копируй её куда надо, и всё. Когда-то давно я так с BTRIEVE'ом поступал.
Re[3]: Риторический вопрос
От: Максим Алексейкин Россия  
Дата: 09.10.02 10:55
Оценка:
Здравствуйте Grumbler, Вы писали:
[...]

Если в VB, то пользоваться надо LoadResData
ICQ #311116826
Re: Риторический вопрос
От: Аноним  
Дата: 09.10.02 11:47
Оценка:
Простите, что вклинился, а что мешает поступить так –

CDatabase* myDB1;
myDB1 = new CDatabase();

myDB1->Open( _T("ExDb"), FALSE,
FALSE, _T("CollatingSequence=ASCII;DBQ=;DefaultDir=;Deleted=1;Driver={Microsoft dBase Driver (*.dbf)};DriverId=277;FIL=dBase IV;FILEDSN=ExDb.dsn ;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Statistics=0;Threads=3;UID=admin;UserCommitSync=Yes;" ),FALSE);
CString sql;
sql = "CREATE TABLE NFSD(NOM_DOK VARCHAR(10),TYPE VARCHAR(1)");
myDB1->ExecuteSQL(sql);

То что Вы используете OLE DB не ограничивает использование других классов. Или делать, как сказали выше просто копировать.
Re[2]: Риторический вопрос
От: Grumbler  
Дата: 10.10.02 16:29
Оценка:
Здравствуйте Аноним, Вы писали:

А>Если тебе извесна структура своей базы, то попробуй так: создай утилитами эту самую базу. Она будет соответственно пустая. Потом просто копируй её куда надо, и всё. Когда-то давно я так с BTRIEVE'ом поступал.


Отличный полход (от других)! Мне эта мыль тоже в голову приходила, но вот незадача: чем создать этот файл, например, формата Microsoft Jet 3.5 или 4.0
Или другой вопрос: Если кто-то (OLE DB, например) занимается ВСЕЙ работой с базами данных, почему бы ему не выполнять действительно ВСЮ работу, в том числе и создание?
Re[8]: Риторический вопрос
От: Grumbler  
Дата: 10.10.02 17:24
Оценка:
Здравствуйте Коваленко Дмитрий, Вы писали:

КД>Здравствуйте Grumbler, Вы писали:


G>>Здравствуйте Коваленко Дмитрий, Вы писали:


КД>>>Это значит, что MSDASQL его не поддерживает.

КД>>>Вообще MSDASQL — это OLEDB для ODBC. То есть типа универсальный провайдер. И вряд ли эта универсальность распространяется на возможность создания баз данных.

G>>А что можно попробовать ещё?


КД>Вспомнил — через мой провайдер все таки можно создать/уничтожить базу данных. Через SQL типа —
"CREATE DATABASE ..."
и
"DROP DATABASE ..."


КД>Так что если ODBC драйвер такие запросы переваривает — можно попробовать. Хотя я в ODBC ни бельмеса не понимаю, так что здесь могу пороть чушь


Встречный вопрос: Каким образом в OLE DB выполнить SQL-оператор, НЕвозвращающий набор данных?
Например: CREATE, INSERT, UPDATE и т. д.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.