powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Подключение к БД
23 сообщений из 23, страница 1 из 1
Подключение к БД
    #33819973
HEEELP ME
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Расскажите пожалуйста как подключить базу на SQL Server 2000 к PB используя реестр и ini файлы
У меня есть информация из учебника о подключении к Access, но и там я не все поняла(???)

Создание пользовательских стандартных классов.

1. Создайте пользовательский класс Standard Class типа Transaction. Это будет базовый класс транзакций с дополнительными функциями, которые позволят пользователю выполнять основные операции при работе с базой данных: подключение и отключение от базы данных. Имена объекта и функций указаны в скрипте.

// Функция к базовому пользовательскому классу
// of_connect for n_trn_base
/*
C помощью dbhandle() проверить, подключена ли база данных
*/
If this.dbhandle() > 0 then
Return -1
End If

CONNECT USING this;

If this. SQLCode <> 0 Then
Messagebox (" Присоединение к базе данных.", &
"Невозможно подсоединиться к Б/Д. " + &
"~r~nDBParm: " + this. DBParm + &
"~r~nКод ошибки: " + String (this.SQLDBCode ) + &
"~r~n" +"Б/Д Сообщение об ошибке: " + this. SQLErrText, &
StopSign!, OK!, 1)
End If
Return this.SQLCode

// Функция к базовому пользовательскому классу
// of_disconnect for n_trn_base
/*
C помощью dbhandle() проверить, подключена ли база данных
*/
If this.dbhandle() > 0 then
DISCONNECT USING this;
If sqlca. SQLCode <> 0 Then
Messagebox (" Отсоединение от базы данных.", &
"Невозможно отсоединиться от Б/Д. " + &
"~r~nDBParm: " + this. DBParm + &
"~r~nКод ошибки Б/Д: " + String(sqlca. SQLDBCode) + &
"~r~n" +"Б/Д Сообщение об ошибке: " + sqlca. SQLErrText, &
StopSign!, OK!, 1)
End If
Return sqlca.SQLCode
Else
Return -1
End If

2. Создайте наследника вновь созданного класса для работы с базами данных, управляемых СУБД Access, с именем n_trn_access. Опишите в классе наследнике следующие объектные переменные:

String sysdir, curdir
и локальные внешние функции (Local External Functions )
function long GetSystemDirectory(ref string a_sysdir,long l_dir) &
library "kernel32.dll" alias for "GetSystemDirectoryA(это менять надо - ???)"
function long GetCurrentDirectory(long l_dir,ref string a_curdir) &
library "kernel32.dll" alias for "GetCurrentDirectoryA"

3. Создайте функцию, которая построит источник данных, в качестве параметра функции задается имя INI-файла.
//public function boolean create_dsn (string as_ INI);
String syskey, ls_NameDataSource, ls_DBFile
long err = 0
sysdir = Space(255)
curdir = Space(255)
GetSystemDirectory(sysdir, 255) // получить системный директорий
GetCurrentDirectory(255,curdir) // получить текущий директорий
ls_DBFile = ProfileString(as_INI,"Data Source(это имя сервера ???)","DB (это имя базы ???)","1" )
curdir += '\' + ls_DBFile
sysdir += '\odbcjt32.dll'
ls_NameDataSource = ProfileString(as_INI,"Data Source","DataBase","1" )
syskey = 'HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\' + &
ls_NameDataSource
err += RegistrySet ( syskey, 'DBQ', RegString!, curdir )
err += RegistrySet ( syskey, 'Driver', RegString!, sysdir )
err += RegistrySet ( syskey, 'DriverId', RegULong!, 25 )
err += RegistrySet ( syskey, 'FIL', RegString!, 'MS Access;')
err += RegistrySet ( syskey, 'Safe Transactions', RegULong!, 0 )
err += RegistrySet ( syskey, 'UID', RegExpandString!, '')
syskey = 'HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources'
err += RegistrySet ( syskey, ls_NameDataSource, RegString!, &
'Driver do Microsoft Access (*.mdb)' ) (что написать тут ???)
if err <> 7 then (почему <>7 ???)
return false
else
return true
end if
4. В объекте наследнике переопределите функцию of_connect:
//public function integer of_connect (string as_ INI);
string ls_NameDataBase
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False // Для совместной работы с Б/Д
ls_NameDataBase = ProfileString(as_INI,"Data Source","DataBase","1" )
SQLCA.DBParm = "ConnectString=DSN="+ ls_NameDataBase+ " ' "
If this.dbhandle() > 0 then
Return -1
End If
CONNECT USING this;
If this. SQLCode <> 0 Then // Если произошла ошибка при подсоединении к Б/Д
IF this. SQLdbCode = 999 THEN // Если не найден источник данных
create_dsn (as_ INI) // Создать источник данных
of_connect(as_ INI) // Еще раз подсоединиться к Б/Д
ELSE
Messagebox (" Присоединение к базе данных.", &
"Невозможно подсоединиться к Б/Д. " + &
"~r~nКод ошибки: " + String (this.SQLDBCode ) + &
"~r~nСообщение об ошибке: " + this. SQLErrText, &
StopSign!, OK!, 1)
END IF
End If
Return this.SQLCode


5. В своем приложении измените свойство SQLCA (нажать кнопку «Additional Properties» на вкладке General свойств приложения, выбрать в окне Application вкладку Variable Types), значение которого должно соответствовать имени, созданного Вами класса транзакций.

6. В событи open приложения вызовите функцию of_connect Вашего объекта транзакций вместо SQL-оператора, а в событии close вызовите функцию of_disconnect.

7. В сценарии к событию Open приложения измените значения свойств подключения к базе данных переменной SQLCA. Значения необходимо взять из Вашего файла параметров. Для этого проделайте следующее:

Создайте текстовый файл в любом подходящем редакторе, например, «Блокноте» и сохраните его под любым именем, но обязательно с расширением INI.

Пример подобного файла: (что мне написать ???)
[Data Source]
DataBase = GIG_Access_enterprises
DB = курсовик1
Скопируйте всю секцию в файл с именем соответствующим вашему приложению, и расширением INI (какую секцию ???). Внимательно прочтите его и измените, так чтобы информация подходила к созданным Вами функциям.
Формат функции ProfileString следующий:

Profile String (“<имя файла>.INI,” “<имя секции>”, “<имя свойства переменной транзакции, которому присваивается значение >”,”<>значение по умолчанию”)

НАПРИМЕР:

sqlca. DBMS = ProfileString(“PB.INI”,”Example_SqlServer”,”DBMS,”” )

Задание
1. Используя материал предыдущих лекций, добавить в приложение обработку ошибок при вызове функций для работы с данными (retrieve, update, delete, и др.). Изменения должны быть сделаны в базовом элементе управления DataWindow.

ПОМОГИТЕ ПОЖАЛУЙСТА ЛЮДИ ДОБРЫЕ, ЗАРАНЕЕ СПАСИБО.
...
Рейтинг: 0 / 0
Подключение к БД
    #33820062
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HEEELP ME wrote:

> Расскажите пожалуйста как подключить базу на SQL Server 2000 к PB
> используя реестр и ini файлы
> У меня есть информация из учебника о подключении к Access, но и там я не
> все поняла(???)

Вот и читай до просветления. Не люблю ленивых студентов.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Подключение к БД
    #33820083
HEEELP ME
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim2000
HEEELP ME wrote:

> Расскажите пожалуйста как подключить базу на SQL Server 2000 к PB
> используя реестр и ini файлы
> У меня есть информация из учебника о подключении к Access, но и там я не
> все поняла(???)

Вот и читай до просветления. Не люблю ленивых студентов.
Posted via ActualForum NNTP Server 1.3
Так другой информации у меня больше нету.
...
Рейтинг: 0 / 0
Подключение к БД
    #33820086
HEEELP ME
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне не понятно только там где вопросы стоят, помогите пожалуйста.
...
Рейтинг: 0 / 0
Подключение к БД
    #33820103
alexis glinski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HEEELP MEМне не понятно только там где вопросы стоят, помогите пожалуйста.
на все эти вопросы есть ответы в help'e PowerBuilder'a (вызывается нажатием F1)
...
Рейтинг: 0 / 0
Подключение к БД
    #33820123
HEEELP ME
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexis glinski HEEELP MEМне не понятно только там где вопросы стоят, помогите пожалуйста.
на все эти вопросы есть ответы в help'e PowerBuilder'a (вызывается нажатием F1)
Ну хорошо, а что же писать в ini файле?
...
Рейтинг: 0 / 0
Подключение к БД
    #33820133
Mykola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
//*--------------------------------------------------------*/
//* The source of connection information can be changed by
//* altering the value of the 'is_connectfrom' variable.
//*--------------------------------------------------------*/
Choose Case is_connectfrom

Case IS_USE_INIFILE /* Populate Database Connection from INI file */
string ls_inifile = ""

as_dbms = ProfileString ( ls_inifile, "Database", "DBMS", "OLE DB")
as_database = ProfileString ( ls_inifile, "Database", "Database", "")
as_userid = ProfileString ( ls_inifile, "Database", "UserID", "")
as_dbpass = ProfileString ( ls_inifile, "Database", "DBPass", "")
as_logid = ProfileString ( ls_inifile, "Database", "LogID", "")
as_logpass = ProfileString ( ls_inifile, "Database", "LogPassword", "")
as_server = ProfileString ( ls_inifile, "Database", "Servername", "")
as_dbparm = ProfileString ( ls_inifile, "Database", "DBParm", "DATASOURCE='sr',PROVIDERSTRING='Database=Dbname',PBCatalogOwner='dbo',PROVIDER='SQLOLEDB',INIT_PROMPT='DBPROMPT_COMPLETE'")
as_lock = ProfileString ( ls_inifile, "Database", "Lock", "")
as_autocommit = ProfileString ( ls_inifile, "Database", "AutoCommit", "false")

Case IS_USE_REGISTRY /* Populate Database Connection from Registry */
string ls_registrykey = "" + "\DataBase"

If RegistryGet ( ls_registrykey, "DBMS", RegString!, as_dbms ) <> 1 Then
RegistrySet ( ls_registrykey, "DBMS", RegString!, "OLE DB" )
RegistryGet ( ls_registrykey, "DBMS", RegString!, as_dbms )
End If
If RegistryGet ( ls_registrykey, "Database", RegString!, as_database ) <> 1 Then
RegistrySet ( ls_registrykey, "Database", RegString!, "" )
RegistryGet ( ls_registrykey, "Database", RegString!, as_database )
End If
If RegistryGet ( ls_registrykey, "UserID", RegString!, as_userid ) <> 1 Then
RegistrySet ( ls_registrykey, "UserID", RegString!, "" )
RegistryGet ( ls_registrykey, "UserID", RegString!, as_userid )
End If
If RegistryGet ( ls_registrykey, "DBPass", RegString!, as_dbpass ) <> 1 Then
RegistrySet ( ls_registrykey, "DBPass", RegString!, "" )
RegistryGet ( ls_registrykey, "DBPass", RegString!, as_dbpass )
End If
If RegistryGet ( ls_registrykey, "LogID", RegString!, as_logid ) <> 1 Then
RegistrySet ( ls_registrykey, "LogID", RegString!, "" )
RegistryGet ( ls_registrykey, "LogID", RegString!, as_logid )
End If
If RegistryGet ( ls_registrykey, "LogPassword", RegString!, as_logpass ) <> 1 Then
RegistrySet ( ls_registrykey, "LogPassword", RegString!, "" )
RegistryGet ( ls_registrykey, "LogPassword", RegString!, as_logpass )
End If
If RegistryGet ( ls_registrykey, "Servername", RegString!, as_server ) <> 1 Then
RegistrySet ( ls_registrykey, "Servername", RegString!, "" )
RegistryGet ( ls_registrykey, "Servername", RegString!, as_server )
End If
If RegistryGet ( ls_registrykey, "DBParm", RegString!, as_dbparm ) <> 1 Then
RegistrySet ( ls_registrykey, "DBParm", RegString!, "DATASOURCE='sr',PROVIDERSTRING='Database=dbname',PBCatalogOwner='dbo',PROVIDER='SQLOLEDB',INIT_PROMPT='DBPROMPT_COMPLETE'" )
RegistryGet ( ls_registrykey, "DBParm", RegString!, as_dbparm )
End If
If RegistryGet ( ls_registrykey, "Lock", RegString!, as_lock ) <> 1 Then
RegistrySet ( ls_registrykey, "Lock", RegString!, "" )
RegistryGet ( ls_registrykey, "Lock", RegString!, as_lock )
End If
If RegistryGet ( ls_registrykey, "AutoCommit", RegString!, as_autocommit ) <> 1 Then
RegistrySet ( ls_registrykey, "AutoCommit", RegString!, "false" )
RegistryGet ( ls_registrykey, "AutoCommit", RegString!, as_autocommit )
End If

Case IS_USE_SCRIPT /* Populate Database Connection from Script */

as_dbms = "OLE DB"
as_database = "Dbname"
as_userid = "u1"
as_dbpass = "p1"
as_logid = "u1"
as_logpass = "p1"
as_server = "sr"
as_dbparm = "DATASOURCE='sr',PROVIDERSTRING='Database=Dbname',PBCatalogOwner='dbo',PROVIDER='SQLOLEDB',INIT_PROMPT='DBPROMPT_NOPROMPT'"
as_lock = "RU"
as_autocommit = "TRUE"

Case Else

Return -1

End Choose

Return 1
...
Рейтинг: 0 / 0
Подключение к БД
    #33820158
THANK YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОГРОМНОЕ СПАСИИИБО МЫКОЛА
Хоть один добродушный и понимающий человек нашелся!!!
...
Рейтинг: 0 / 0
Подключение к БД
    #33820168
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HEEELP MElibrary "kernel32.dll" alias for "GetSystemDirectoryA(это менять надо - ???)"
Не ясна суть вопроса.
HEEELP MEls_DBFile = ProfileString(as_INI,"Data Source(это имя сервера ???)","DB (это имя базы ???)","1" )
Нет, это название секции и ключа в ini-файле типа
Код: plaintext
1.
[Data Source]
DB = а_это_похоже_на_имя_файла_с_базой
Вообще вот параметры для объекта транзацкии для подключения к MS SQL через native интерфейс PB (можно через разные интерфейсы подключаться):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
// Profile soz
// Profile sugar_test
SQLCA.DBMS = "OLE DB"
SQLCA.LogId = "sa"
SQLCA.Lock = "RC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "PROVIDER='SQLOLEDB',DATASOURCE='servername',PROVIDERSTRING='database=dbname'"
Код: plaintext
if err <>  7  then (почему <> 7  ???)
Потому, что до этого 7 раз записали в реестр.
...
Рейтинг: 0 / 0
Подключение к БД
    #33820172
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. через OLE DB.
...
Рейтинг: 0 / 0
Подключение к БД
    #33820832
HEEELP ME
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин Маркт.е. через OLE DB.
Спасибо конечно, но мне просто через ODBC надо
...
Рейтинг: 0 / 0
Подключение к БД
    #33820866
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000Вот и читай до просветления. Не люблю ленивых студентов.
Согласен...

HEEELP MEТак другой информации у меня больше нету.
Да что Вы говорите?! А интернет у Вас есть? Если нет, то непонятно как Вы здесь оказались. А если есть, то куда же с него информация то подевалась???
Если не умеете читать хелпы, то учитесь пользоваться поисковиками и поиском по форуму. А так же просто внимательно читать что вообще кроме собщений на форуме есть, в тоом числе и в меню. Например, - FAQ . Там специально, и для Вас в том числе, люди выкладывают и примеры кода, и решений, и ссылки на документацию...


---
С уважением, IKAR

IkarHomeCenter
Портал рускоязычной группы пользователей Sybase
Портал детских фотографий
...
Рейтинг: 0 / 0
Подключение к БД
    #33820890
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HEEELP MEСпасибо конечно, но мне просто через ODBC надо
Ну так надо было сразу и говорить, там еще меньше строчек
Код: plaintext
1.
2.
3.
// Profile st
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=sugar_test;UID=sa;PWD='"
А в данном случае, источник данных sugar_test нужно завести в Источники данных (ODBC), или вызвать этот же диалог из PB.
...
Рейтинг: 0 / 0
Подключение к БД
    #33821123
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Локшин Марк

Народ ленив, а программист должОн облегчить труд людей, а по сему, я предпочитаю более изящный коннект, который выглядит примерно так:
Код: plaintext
1.
2.
3.
4.
SQLCA.DBParm = "ConnectString='DRIVER=SQL Server;SERVER=ServerName;DATABASE=DataBaseName;Uid=user;Pwd=password;
Trusted_Connection=no;APP=YourCoolApplication',CallEscape='No',DisableBind=1,
SQLCache=0,CommitOnDisconnect='No',DelimitIdentifier='No',
ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT',
Date=' \''dd.mm.yyyy\'' ',DateTime=' \''dd.mm.yyyy hh:mm:ss.fff\'' '"

Тут не нужно прописывать в системе ODBC источник.
...
Рейтинг: 0 / 0
Подключение к БД
    #33821344
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Black SavageНарод ленив, а программист должОн облегчить труд людей, а по сему, я предпочитаю более изящный коннект,
Ну так источник данных может добавить и сама программа, а зато потом ленивый пользователь может его изменять при необходимости через стандартные диалоги системы. По-моему нужно иметь достаточно веские причины чтобы переписывать такие диалоги... И диалог этот из своей программы вызывать легко можно...
...
Рейтинг: 0 / 0
Подключение к БД
    #33821901
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркПо-моему нужно иметь достаточно веские причины чтобы переписывать такие диалоги...
Причина:
Пространственно распределенная структура организации, огромное число пользователей, работающих с программой, и занятый админ...

Впрочем, если тебе не лень самому прописывать ODBC источник - ходи ножками и прописывай его на каждой машине. Я еще не разу не видел пользователя способного это сделать самостоятельно...
...
Рейтинг: 0 / 0
Подключение к БД
    #33821972
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Black SavageВпрочем, если тебе не лень самому прописывать ODBC источник - ходи ножками и прописывай его на каждой машине. Я еще не разу не видел пользователя способного это сделать самостоятельно...
Ыыы? Это зачем мне самому прописывать ODBC источник? Создать источник данных можно и программно. А подкорректировать - уже пользователь через стандартный интерфейс.
P.S. А я этот компьютер могу вообще в глаза не видеть.
...
Рейтинг: 0 / 0
Подключение к БД
    #33822154
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Локшин Марк
Ну и чего тебе не нравиться то? Грубо говоря, мой пример и "создает источник данных программно". Только в отличие от реального прописывания ODBC Source не нужно заботиться хватит ли прав у текущего пользователя на данной машине для этой операции. Что бы ты ни написал в своей программе, она запускается от имени и с правами пользователя, а у него права могут быть крайне ограниченными на текущей машине.

Впрочем, я не собираюсь развязывать здесь "религиозные войны", а по сему, пусть каждый пишет программы в меру своего понимания проблемы...
...
Рейтинг: 0 / 0
Подключение к БД
    #33822232
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Black Savageа у него права могут быть крайне ограниченными на текущей машине
Вполне естественно, что инсталировать программу должен человек обладающий на то соответствующими правами, а не первый попавшийся пользователь. И менять источники подключения туда-сюда всякий встречный-поперечный не должен.
...
Рейтинг: 0 / 0
Подключение к БД
    #33822335
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркВполне естественно, что инсталировать программу должен человек обладающий на то соответствующими правами, а не первый попавшийся пользователь
А нах ее инсталлировать то? Инсталляция, в твоем понимании, накидать *.dll (виртуальной машины), *.pbl и *.pbd (программы) в нужную папку? Я гляжу, ты либо никогда не занимался поддержкой конечных пользователей или твоя программа работает в пределах одного здания, либо в каждом здании по админу. Надеюсь, тебе не надо обьяснять, что права на доступы пользователя к тем или иным обьектам базы вполне в состоянии присечь действия "первого попавшегося пользователя", при условии, что он знает свой логин и пароль на базу?

Гораздо проще записать нужные параметры (сервер, база, тип коннекта) в *.ini файл. При запуске программы прочитать этот инишник, дать пользователю ввести логин и пароль, а после сформировать приведенную мною выше строку коннекта. Зачем огород то городить с прописанием источника ODBC через реестр Windows?

Следует подчеркнуть еще одну приятность. Строка APP=YourCoolApplication в моем примере позволяет удобно отслеживать запросы в Profiler . Там в столбце ApplicationName будет фигурировать введенное имя приложения, т.е. YourCoolApplication
...
Рейтинг: 0 / 0
Подключение к БД
    #33822439
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Black SavageА нах ее инсталлировать то? Инсталляция, в твоем понимании, накидать *.dll
(виртуальной машины), *.pbl и *.pbd (программы) в нужную папку?
Инсталяция - это инсталяция, которая включает в себя и копирование файлова, и конфигурирование системы, и создание и настройку базы и много еще чего...
Black SavageЯ гляжу, ты либо никогда не занимался поддержкой конечных пользователей
Ну абсолютно неверно.
Black Savageили твоя программа работает в пределах одного здания,
Даже есть распределенные варианты установки, даже разных программ
Black Savageлибо в каждом здании по админу.
Обычно ставится на предприятия в которых от 10 компьютеров, обычно - не менее 20. Если за этим хозяйством хотя бы на 0.25 ставки не следит админ, то пользователи просто за%?ут поддержку, в т.ч. с вопросами а где мой документ который я вчера сохранила, не говоря уже про то, что из свича кабель уборщица выдернула. Если у них нет денег даже на такого админа, то все очень просто - значит это не наши клиенты.
Black SavageГораздо проще записать нужные параметры (сервер, база, тип коннекта) в *.ini файл. При запуске программы прочитать этот инишник, дать пользователю ввести логин и пароль, а после сформировать приведенную мною выше строку коннекта.
А чем это отличается? Тот же файл, только в своем, а не общепризнаном формате
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
qqq.dsn
[ODBC]
DRIVER=SQL Server
UID=sa
WSID=test
APP=Microsoft Data Access Components
SERVER=test2003
Description=qqq
Права-то на редактирование этого инишника тоже отбирать у обычного пользователя надо. А логин и пароль запросить - никто не мешает.
Black SavageЗачем огород то городить с прописанием источника ODBC через реестр Windows?
А почему обязательно реестр?
...
Рейтинг: 0 / 0
Подключение к БД
    #33822538
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк// Profile st
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=sugar_test;UID=sa;PWD='"

А в данном случае, источник данных sugar_test нужно завести в Источники данных (ODBC), или вызвать этот же диалог из PB.
Локшин МаркНу так источник данных может добавить и сама программа, а зато потом ленивый пользователь может его изменять при необходимости через стандартные диалоги системы.
Локшин МаркСоздать источник данных можно и программно. А подкорректировать - уже пользователь через стандартный интерфейс.
Из этих фраз я понял, что ты создаешь программно или руками запись в Data Sources (ODBC) , т.е. добавляешь записи либо в Пользовательский DSN или в Системный DSN . Соответственно, эти записи хранятся в реестре Windows :
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC

Если же ты не создаешь подобных записей, а читаешь свой инишник и генеришь строку коннекта, то в конечном счете должно получиться тоже самое, что и у меня. Тогда не очень понятно, нафига там инфа о пользователе sa ? Простым смертным не обязательно знать логин администратора базы данных. Советую, пересмотреть свой подход к настройке коннекта...
...
Рейтинг: 0 / 0
Подключение к БД
    #33822605
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Black SavageЕсли же ты не создаешь подобных записей, а читаешь свой инишник и генеришь строку коннекта, то в конечном счете должно получиться тоже самое, что и у меня. Тогда не очень понятно, нафига там инфа о пользователе sa? Простым смертным не обязательно знать логин администратора базы данных. Советую, пересмотреть свой подход к настройке коннекта...
1. Есть такая вещь как файловый DSN, и конфигурируются все параметры при помощи стандартных диалогов.
2. Так это же для примера я указал такой login, странно было бы думать, что я указываю логин/пароль пользователя.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Подключение к БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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