|
|
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Здрасьте. У меня получается создать DSN таким образом. Код: plaintext 1. Код: plaintext DSN=TestX SERVER=MY_COMP\DB DATABASE=Test. Проблема в том, что имя сервера мне необходимо получить как параметр и вставлять его в строку. Опробованным способам нет числа, но DSN не создаётся! Первое, что было опробовано: Код: plaintext 1. Код: plaintext 1. 2. И много ещё чего, но все впустую. Вся проблема в этих символах конца строки, по-моему. Прошу помощи, в общем. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 14:48 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 14:55 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Сорри. Вот так правильно Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 14:58 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Олег Нов... Код: plaintext И такое тоже не работает :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 15:02 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Добавь для визуального контроля Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 15:04 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Дефинацию Server - в студию !!! плиз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 15:06 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Олег НовДобавь для визуального контроля Код: plaintext Так все время контролирую! После wsprintf пишет "DSN=TestX". С чем в общем-то я согласна, дальше то символ конца строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 15:10 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Олег НовДефинацию Server - в студию !!! плиз char *Server; ну и, соответственно, это сейчас MY_COMP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 15:11 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Перед wsprintf Код: plaintext MY_COMP После Код: plaintext SERVER=MY_COMP\\DB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 15:16 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
скорее всего Server не присваивается значение "MY_COMP"; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 15:19 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Олег НовПеред wsprintf Код: plaintext MY_COMP После Код: plaintext SERVER=MY_COMP\\DB Эээээ... Как-то теряюсь. Значит так: Код: plaintext 1. 2. В МесиджБоксе вижу сначала MY_COMP затем ровно 1024 одинаковых кракозябины и в конце три неодинаковых. К чему бы это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 15:23 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Олег Новскорее всего Server не присваивается значение "MY_COMP"; Не думаю. Ведь можно и местами поменять так: Код: plaintext 1. Тогда на выходе видим SERVER=MY_COMP\DB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 15:28 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Cerebrum видел? -------------------------------------------------------------- [подпись с другого сайта] Спасибо, смотрю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 15:31 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
посмотрел MSDN (давненько на С не программировал - последнее время все как-то Oracle) sprintf и все остальные (wsprintf, ...) используют форматную строку ограниченную нулем, поэтому после первого вхождения \0 эта строка на этом заканчивается, то есть Мы работаем на самом деле не с "DSN=TestX\0SERVER=%s\\DB\0DATABASE=Test\0" а с "DSN=TestX" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 15:54 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Олег Новпосмотрел MSDN (давненько на С не программировал - последнее время все как-то Oracle) sprintf и все остальные (wsprintf, ...) используют форматную строку ограниченную нулем, поэтому после первого вхождения \0 эта строка на этом заканчивается, то есть Мы работаем на самом деле не с "DSN=TestX\0SERVER=%s\\DB\0DATABASE=Test\0" а с "DSN=TestX" Это ясно, однако, при статичном задании строки аттрибутов в SQLConfigDataSource с terminate symbol в качесве разделителя между параметрами, всё работает. Я пробовала двойной слэш ставить "\\0", не работает тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 16:02 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
P.S. после MSDN самому стало интересно. Запустил Visual Studio и попробовал следующее Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Вот так правильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 16:05 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Cerebrum видел? -------------------------------------------------------------- [подпись с другого сайта] Смотрю и не вижу. :( Точнее не понЫмаю. Не могли бы Вы пояснить. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 1. тип переменных buf и d (char* и char[160], соответственно)? 2. не прочувствовался смысл деления размера всей структуры на размер первого элемента "sizeof(ODBC_KeyWords)/sizeof(ODBC_KeyWords[0])" 3. ODBC_KeyWords [i].format 4. ODBC_KeyWords.value 5. откуда этот тип "key_value_pair" Спасибо большое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 16:14 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Олег НовP.S. после MSDN самому стало интересно. Запустил Visual Studio и попробовал следующее Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Вот так правильно И у вас создается DSN? :О У меня все то же nRtCode = 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 16:19 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
это ты спроси у того, кто мне это насоветовал я сделал так: часть параметров (до разделяющего \0) записал с помощью функции SQLConfigDataSource, остальные внес через реестр с помощью функций по работе с реестром объявленных в библиотеке advapi32.dll, так как все равно необходимой функциональности SQLConfigDataSource не обеспечит! -------------------------------------------------------------- [подпись с другого сайта] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 16:20 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Cerebrumэто ты спроси у того, кто мне это насоветовал я сделал так: часть параметров (до разделяющего \0) записал с помощью функции SQLConfigDataSource, остальные внес через реестр с помощью функций по работе с реестром объявленных в библиотеке advapi32.dll, так как все равно необходимой функциональности SQLConfigDataSource не обеспечит! -------------------------------------------------------------- [подпись с другого сайта] А что там было до нуля, только "DSN=%s" и всё. Т.е. ты всё делал через реестр? И какова переносимость на другие версии Windows? Мне надо сделать так, чтобы всё работало веками без посторонней руки, без переписки API функций... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 16:44 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
FaceAgainstFloor1. тип переменных buf и d (char* и char[160], соответственно)?нет конечно. Откуда вы сударыня выкопали char[160]??? Обе переменные простые указатели. FaceAgainstFloor2. не прочувствовался смысл деления размера всей структуры на размер первого элемента "sizeof(ODBC_KeyWords)/sizeof(ODBC_KeyWords[0])"Делится не структура, а массив структур на размер первого элемента массива - вычисление размера статического массива на этапе препроцессора. FaceAgainstFloor3. ODBC_KeyWords .format 4. ODBC_KeyWords.value И то и другое либо массивы char либо указатели на char, как удобнее так и делаешь. FaceAgainstFloor5. откуда этот тип "key_value_pair"Сам придумал. А если SQLConfigDataSource вернул 0 - запусти SQLInstallerError и узнаешь что именно в твоем наборе параметров неправильно. А если не умеешь работать с массивами и лень учится работать с массивами, то можно сделать по другому: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 16:53 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Я полагал, что проблема с форматированием, она решена (см.предыдущий пост), а что касается DSN, считаю создание DSN-нов порочной практикой. Ведь если можно обойтисть без DSN, то не нужно их вообще создавать. Например Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Это моя личная точка зрения (софт пишется для людей, в том числе и для инсталяторов, нефиг пакостить за собой в реестре и прочих местах, переписал с CD диска и все, работай, надо удалить - сотри каталог с прогой) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 16:54 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Cerebrumчасть параметров (до разделяющего \0) записал с помощью функции SQLConfigDataSource, остальные внес через реестр с помощью функций по работе с реестром объявленных в библиотеке advapi32.dll, так как все равно необходимой функциональности SQLConfigDataSource не обеспечит!Не правда - SQLConfigDataSource может сделать dsn любого типа с любыми параметрами плюс еще и проверит правильность создания. Самому лазить для создания DSN в регистри глупо и опасно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 16:56 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Олег НовЯ полагал, что проблема с форматированием, она решена (см.предыдущий пост), а что касается DSN, считаю создание DSN-нов порочной практикой. Ведь если можно обойтисть без DSN, то не нужно их вообще создавать.Это верно и правильно до тех пор, пока не возникнет необходимость подключать две и больше программ к одной и той же базе. DSN позволяет указывать всем программам только имя dsn а конкретные параметры сервера/базы будут хранится в dsn - базу можно будет прозрачно для юзера переносить на другие сервера. dsn-less коннекты удобны только пока ты один-единственный клиент к базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 16:59 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
White Owl А если не умеешь работать с массивами и лень учится работать с массивами, то можно сделать по другому: Код: plaintext 1. О, за это спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 17:02 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
2 White Owl Программа должна иметь INI файл (или что-то похожее), чтоб там был прописан DNS Вот туда можно и нужно прописать все что в DNS и даже больше А вот если - нужно срубить бабки за инсталяцию, чтоб никто кроме вас не смог это сделать, или просто показать, насколько сложен продукт уже при инсталяции, то да и DNS и реестр и какой-нибудь файлик или dll в глубь чужих каталогов закинуть(windows\... или др.) и пр.и пр. ;-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 17:26 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Олег Нов2 White Owl Программа должна иметь INI файл (или что-то похожее), чтоб там был прописан DNS Вот туда можно и нужно прописать все что в DNS и даже больше Неправда. Не должна. Кроме твоих собственных программ, бывают еще и системные программы например isql или backup какой-нибудь. Их не научишь разбирать твой собственный ini. К тому же, делая микроутилиту в дополнение к уже существующему проекту можно жестко вписать туда имя dsn и обойтись вообще без разбора ini. DSN это в конце-концов тоже самое что и INI файл, только ориентированый на базы данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 17:34 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Собственный софт (в т.ч. различные утилиты) Oracle и MS не используют DNS Они используют или конфигурационный файл или возможность запуска с параметрами (имя сервера, пользователя, пароль) или при запуске(обращении) визульно выбрать базу Например 1) tnsnames.ora 2) SQL Plus и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 17:47 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
Олег НовСобственный софт (в т.ч. различные утилиты) Oracle и MS не используют DNS Они используют или конфигурационный файл или возможность запуска с параметрами (имя сервера, пользователя, пароль) или при запуске(обращении) визульно выбрать базуУгу, и ты либо заставляешь юзера вручную подключаться к базе, либо для каждого чиха пишешь длинную строку с набором параметров. Мне при переносе базы на другой сервер достаточно поменять один dsn, а тебе прийдется бегать по всем конфигам, батникам и ярлыкам и править их. Не, если хочешь жить с dsn-less подключениями, то вперед. Никто не запрещает. ССЗБ, только и всего :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 18:10 |
|
||
|
ODBC, Создать DSN
|
|||
|---|---|---|---|
|
#18+
При переносе базы на другой сервер ты меняешь dsn на каждом компе, а я меняю 1 строку на 1-м файле, расположенном на сетевом ресурсе В программах и БД (разные организации - разные задачи и БД) при подключении может быть или нет кнопка с обзором достуных серверов (как в Query Analyzer - MS SQL Server) и юзер может подключиться к любому доступному (сам пользуюсь чтоб не править ничего и коннектиться к раб. или тестовой базам) А так DNS тож в общем ничего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2007, 18:56 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2029250]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
170ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 254ms |
| total: | 556ms |

| 0 / 0 |
