Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.028 c
1-84277
Sliski Slimak
2003-06-14 01:12
2003.06.26
Битовые флаги


3-84036
elena_m
2003-05-29 17:50
2003.06.26
ADO connection, D7, MS SQL2000


4-84836
Akvilon
2003-04-24 11:45
2003.06.26
уникальность окна, в чем?


11-84048
Друмлин
2002-10-07 18:33
2003.06.26
Иконку в ListView


1-84322
And
2003-06-16 07:26
2003.06.26
Подскажите что лучше использовать?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский