Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.26;
Скачать: CL | DM;

Вниз

EDBEngineError   Найти похожие ветки 

 
vajo   (2003-05-28 12:35) [0]

Сделал консольное приложение, кот. формирует вэб страницу. Хочу выводить на ней базу из SQL Server 2000. База настроена в BDE. В пректе имею DataModul1, в кот. находится TQuery, настроеный на базу SQL.
При запуске проекта выходит ошибка:
"Project Pr.exe raised exception class EDBEngineError with message "Unknown user name or password.
Login failed for user "maa".
Login incorrect.
Alias: test". Process stopped."


Как реализовать коннект с базой?
Если использовать в обычном приложении (не консольном), то база подключается без проблем. Перед запуском она сама спрашивает имя и пароль, а как быть в консольном.
Если использовать локальные базы, например, из алиаса DBDEMO, то все работает.

Вот код:
program CgiDate;

{$APPTYPE CONSOLE}
uses
SysUtils,
Unit1 in "Unit1.pas" {DataModule1: TDataModule},

var

begin
DataModule1:=TDataModule1.Create(nil); // здесь останавливается
writeln ("CONTENT-TYPE: TEXT/HTML");
writeln;
writeln ("<HTML><HEAD>");
writeln ("<TITLE>Cgidate</TITLE>");
writeln ("</HEAD><BODY>>");
writeln ("<H1>Пример</H1>");
writeln ("<input type="submit" name="Submit" value="Sub">");
DataModule1.QueryLogAccount.Active:=True;
DataModule1.Destroy;
writeln ("</BODY>>");
end.


Unit Unit1;

interface

uses
SysUtils, Classes, DB, DBTables;

type
TDataModule1 = class(TDataModule)
QueryLogAccount: TQuery;
private
{ Private declarations }
public
{ Public declarations }
end;

var
DataModule1: TDataModule1;

implementation

{$R *.dfm}

end.


 
Max Zyuzin ©   (2003-05-28 12:47) [1]

>vajo (28.05.03 12:35)
А зачем тебе DataModule? Может TDataBase создать какой нить?


 
Zelius ©   (2003-05-28 13:22) [2]

Тебе нужен не только TQuery, но и TDatabase, у которого надо отключить LoginPrompt := False; а юзера и пароль передавать чеерз TDatabase.Parameters


 
Соловьев ©   (2003-05-28 13:26) [3]

ИМХО, для MS SQL лучше использовать родную технологию ADO без BDE.


 
vajo   (2003-05-28 13:33) [4]

Попробовал использовать TADOQuery - там можно указать имя и пароль, но теперь он при запуске ругается
"Project Pr.exe raised exception class EOleSysError with message "не бал произведен вызов CoInitialize". Alias: test". Process stopped."
Что это CoInitialize и что с этим делать?


>Max Zyuzin
Так мне кажется удобней.


 
Max Zyuzin ©   (2003-05-28 13:36) [5]

>vajo (28.05.03 13:33)
Бррр... можно спросить чем это удобней? Создавать в памяти весч, которая не нужна... ИМХО. Да и кстати согласен что BDE сюда лучше не прикручивать.


 
Соловьев ©   (2003-05-28 13:51) [6]


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


 
Max Zyuzin ©   (2003-05-28 13:52) [7]

>Соловьев © (28.05.03 13:51)
Раскажи плиз подробней какие выгоды (без подколов - интересно просто)


 
Соловьев ©   (2003-05-28 14:01) [8]

выгода в том, что при использовании DataModule или WebModule тебе удобно не создавать компоненты доступа к данным, а просто положить их на форму. Не головняка с прописыванием этого программно. При использовании WebModule тебе легче как разработчику обрабатывать строку запроса от клиента, и с построением потом результата, использовав PageProduser тоже легче...


 
Max Zyuzin ©   (2003-05-28 14:05) [9]

>Соловьев © (28.05.03 14:01)
Стоп. О какой форме идет речь если у нас консольное приложение, и этот DataModule создается динамически?


 
Соловьев ©   (2003-05-28 14:11) [10]


> О какой форме

DataModule или WebModule


 
Max Zyuzin ©   (2003-05-28 14:22) [11]

>Соловьев © (28.05.03 14:11)
Может уже я чегонить недогоняю... но DataModule создан для централизации всех невизуальных компонент для работы с данными в одном месте, и все равно на нем придется создавать всякие Query и DataBase. По этому вопрос на кой он нужен в консольном приложении?


 
Соловьев ©   (2003-05-28 14:28) [12]


> Max Zyuzin © (28.05.03 14:22

подключаешь к консольному приложению DataModule и ничего создавать ручками не надо.

> невизуальных компонент для работы с данными в одном месте

в WebModule еще и строку запроса можно анализировать.


 
Max Zyuzin ©   (2003-05-28 14:39) [13]

>Соловьев © (28.05.03 14:28)
Но автор то пытается его сделать динамически!


 
Соловьев ©   (2003-05-28 14:45) [14]


> Unit1 in "Unit1.pas" {DataModule1: TDataModule},

а это что?


 
Max Zyuzin ©   (2003-05-28 15:12) [15]

>Соловьев © (28.05.03 14:45)
Извиняюсь невнимательно посмотрел.


 
Соловьев ©   (2003-05-28 15:18) [16]


> Max Zyuzin © (28.05.03 15:12)

так нет проблем :)
просто интересно где автор поста? он что-то выяснил?


 
Max Zyuzin ©   (2003-05-28 15:21) [17]

>Соловьев © (28.05.03 15:18)
Так часто бывает... :-) в общем хорошо подискутировали...


 
vajo   (2003-05-30 08:09) [18]

>Соловьев Меня просто временно не было у интернета.

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

Но мне всё ещё не понятно, что делать с вопросом
от (28.05.03 13:33) "Что это CoInitialize и что с этим делать?"

Может есть др. способы подключения к MSSQL?


 
Соловьев ©   (2003-05-30 09:49) [19]

добавь :
Application.Initialize;
Application.CreateForm(TDataModule1, DataModule1);
Application.Run;


 
vajo   (2003-05-30 14:00) [20]

>Соловьев
А где это дописать?
DataModule1 создается в первом коде и Application.Initialize там не напишешь.


 
Соловьев ©   (2003-05-30 14:03) [21]


> DataModule1 создается в первом коде и Application.Initialize
> там не напишешь.

Вот те три строчки вместо этой
DataModule1:=TDataModule1.Create(nil); // здесь останавливается



 
vajo   (2003-05-30 14:07) [22]

Ругается:
Undeclared idetifier "Application"


 
Соловьев ©   (2003-05-30 14:14) [23]

uses + Form


 
vajo   (2003-05-30 14:22) [24]

дописал в uses forms.
uses
SysUtils,Forms


Ругается:
Undeclared idetifier "Application"

Чего-то не хватает


 
Соловьев ©   (2003-05-30 14:25) [25]


> var
>
> begin

что это еще за var?
и приведи код.


 
MOA ©   (2003-05-30 14:28) [26]

>Что это CoInitialize
Это вызов для инициалмизации OLE - Вы ведь пользуетесь ADO? Тогда при старте:
CoInitialize(nil);
Соответственно, при завершении
CoUninitialize();

Хотя Ваша проблема в другом. Пути решения:
1. Установить в соответствующем объекта (TDatabase? TADOConnectiomn) св-во LoginPrompt в False
и:
2.1 Если Вы пользуетесь Windows autentification - оставьте поля имени пароля пустыми (рекомендуется)
2.2 Если SQL autentification - то пропишите имя и пароль (не рекомендуется, светите логин в базу)
Удачи!


 
vajo   (2003-06-02 08:33) [27]

>Соловьев
Вот код:
program CgiDate;

{$APPTYPE CONSOLE}
uses
SysUtils,
Unit1 in "Unit1.pas" {DataModule1: TDataModule},

begin
DataModule1:=TDataModule1.Create(nil); // здесь останавливается
writeln ("CONTENT-TYPE: TEXT/HTML");
writeln;
writeln ("<HTML><HEAD>");
writeln ("<TITLE>Cgidate</TITLE>");
writeln ("</HEAD><BODY>>");
writeln ("<H1>Пример</H1>");
writeln ("<input type="submit" name="Submit" value="Sub">");
DataModule1.QueryLogAccount.Active:=True;
DataModule1.Destroy;
writeln ("</BODY>>");
end.


Unit Unit1;

interface

uses
SysUtils, Classes, DB, DBTables, ADODB;

type
TDataModule1 = class(TDataModule)
QueryLogAccount: TADOQuery;
private
{ Private declarations }
public
{ Public declarations }
end;

var
DataModule1: TDataModule1;

implementation

{$R *.dfm}

end.


С этим кодом такое сообщение:
"Project Pr.exe raised exception class EOleSysError with message "не бал произведен вызов CoInitialize". Alias: test". Process stopped."


 
sniknik ©   (2003-06-02 08:40) [28]

vajo (02.06.03 08:33)
см
MOA © (30.05.03 14:28)

begin
CoInitialize(nil);
DataModule1:=TDataModule1.Create(nil); // здесь останавливатся не будет
writeln ("CONTENT-TYPE: TEXT/HTML");
writeln;
writeln ("<HTML><HEAD>");
writeln ("<TITLE>Cgidate</TITLE>");
writeln ("</HEAD><BODY>>");
writeln ("<H1>Пример</H1>");
writeln ("<input type="submit" name="Submit" value="Sub">");
DataModule1.QueryLogAccount.Active:=True;
DataModule1.Destroy;
writeln ("</BODY>>");
CoUninitialize();
end.


еще модуль ActiveX в uses добавь


 
sniknik ©   (2003-06-02 08:42) [29]

это по vajo (28.05.03 13:33)
> Попробовал использовать TADOQuery - там можно указать имя и пароль, но теперь он при запуске ругается
"Project Pr.exe raised exception class EOleSysError with message "не бал произведен вызов CoInitialize". Alias: test". Process stopped."
> Что это CoInitialize и что с этим делать?



 
vajo   (2003-06-02 11:41) [30]

Я вот еще одного никак не пойму.
В ConnectionString у TADOQuery указано как подключаться (тест подключения проходит), а при запуске проекта ругается, что имя или пароль неверны. В обычном (не консольном) проекте это работает.
От чего это может быть?


 
sniknik ©   (2003-06-02 11:45) [31]

так поставь LoginPrompt=false


 
vajo   (2003-06-02 12:00) [32]

> sniknik ©
У кого? У TADOQuery нет свойства LoginPrompt.


 
sniknik ©   (2003-06-02 12:32) [33]

зато есть у TADOConnection, через который и надо в принципе работать.


 
BlackKing   (2003-06-02 23:22) [34]

A ja bral komponenti s zakladki BDE
TDataBAse u kotorogo LoginPrompt:=False;
a v parametri vpisal
USER NAME = zzz
password = xxx

jesli rabotajesh cherez Apache to neobhodimo al"jas sozdavat" v ODBC Administratore v razdele SYSTEM DNS.

I bez problem.

Jesli sho, pishite na milo.


 
Quest   (2003-06-03 11:30) [35]

>>vajo
Вот примерчик с ADO, думаю разберёшся:
program telephone;
{$APPTYPE CONSOLE}
uses
SysUtils,ADODB,ActiveX,Windows,Classes;
{$E cgi}
const
QUERY_STRING = "QUERY_STRING";
var
Connect : TADOConnection;
ADOQuery1 : TADOQuery;

begin
CoInitialize(Nil);
try
Connect := TADOConnection.Create(Nil);
try
Connect.ConnectionString :="Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Initial Catalog=UNIDELL;Data Source=SQLBase_NAME";
with Connect do begin
Open("user","Vgvgyjeh");
if Connected then Begin
ADOQuery1 := TADOQuery.Create(Nil);
Try
ADOQuery1.connection := Connect;
ADOQuery1.sql.add("select * from telephon ");
ADOQuery1.Active:=true;
ADOQuery1.Open;
Writeln(ADOQuery1.FieldByName("NAME").AsString);
finally
ADOQuery1.Close;
ADOQuery1.Free;
End;
END;
Finally
Connect.Close;
Connect.Free;
End;
finally
CoUninitialize();
end;
end.


 
Quest   (2003-06-03 11:33) [36]

Open("user","Vgvgyjeh"); - это имя и пароль на доступ к БД



Страницы: 1 вся ветка

Текущий архив: 2003.06.26;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.022 c
1-84327
Igor
2003-06-16 05:29
2003.06.26
Как запустить программу и дождаться ее завершения?


14-84588
Igor__
2003-06-08 12:19
2003.06.26
Стеганография


3-83966
Yakudza
2003-05-29 15:40
2003.06.26
Перезагрузка ячейки в DBGrid


14-84616
Cobalt
2003-06-07 00:48
2003.06.26
Отчет об


3-83935
Rick_ua
2003-06-03 20:32
2003.06.26
DB2 & dbExpress