|
|
|
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 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34396042&tid=2029250]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
162ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 477ms |

| 0 / 0 |
