Форум: "Базы";
Текущий архив: 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.027 c