![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
EDBEngineError [D7, MSSQL]
vajo © (2003-05-28 12:35:00)Сделал консольное приложение, кот. формирует вэб страницу. Хочу выводить на ней базу из 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.
Quest (2003-06-03 11:33:00) [1]
Open("user","Vgvgyjeh");- это имя и пароль на доступ к БД
Quest (2003-06-03 11:30:00) [2]>>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.
BlackKing (2003-06-02 23:22:00) [3]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.
sniknik (2003-06-02 12:32:00) [4]зато есть у TADOConnection, через который и надо в принципе работать.
vajo (2003-06-02 12:00:00) [5]> sniknik ©
У кого? У TADOQuery нет свойства LoginPrompt.
sniknik (2003-06-02 11:45:00) [6]так поставь LoginPrompt=false
vajo (2003-06-02 11:41:00) [7]Я вот еще одного никак не пойму.
В ConnectionString у TADOQuery указано как подключаться (тест подключения проходит), а при запуске проекта ругается, что имя или пароль неверны. В обычном (не консольном) проекте это работает.
От чего это может быть?
sniknik (2003-06-02 08:42:00) [8]это по vajo (28.05.03 13:33)
> Попробовал использовать TADOQuery - там можно указать имя и пароль, но теперь он при запуске ругается
"Project Pr.exe raised exception class EOleSysError with message "не бал произведен вызов CoInitialize". Alias: test". Process stopped."
> Что это CoInitializeи что с этим делать?
sniknik (2003-06-02 08:40:00) [9]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 добавь
vajo (2003-06-02 08:33:00) [10]>Соловьев
Вот код:
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."
MOA (2003-05-30 14:28:00) [11]>Что это CoInitialize
Это вызов для инициалмизации OLE - Вы ведь пользуетесь ADO? Тогда при старте:
CoInitialize(nil);
Соответственно, при завершении
CoUninitialize();
Хотя Ваша проблема в другом. Пути решения:
1. Установить в соответствующем объекта (TDatabase? TADOConnectiomn) св-во LoginPrompt в False
и:
2.1 Если Вы пользуетесь Windows autentification - оставьте поля имени пароля пустыми (рекомендуется)
2.2 Если SQL autentification - то пропишите имя и пароль (не рекомендуется, светите логин в базу)
Удачи!
Соловьев (2003-05-30 14:25:00) [12]
> var
>
> begin
что это еще за var?
и приведи код.
vajo (2003-05-30 14:22:00) [13]дописал в uses forms.
uses
SysUtils,Forms
Ругается:
Undeclared idetifier "Application"
Чего-то не хватает
Соловьев (2003-05-30 14:14:00) [14]uses + Form
vajo (2003-05-30 14:07:00) [15]Ругается:
Undeclared idetifier "Application"
Соловьев (2003-05-30 14:03:00) [16]
> DataModule1 создается в первом коде и Application.Initialize
> там не напишешь.
Вот те три строчки вместо этой
DataModule1:=TDataModule1.Create(nil); // здесь останавливается
vajo (2003-05-30 14:00:00) [17]>Соловьев
А где это дописать?
DataModule1 создается в первом коде и Application.Initialize там не напишешь.
Соловьев (2003-05-30 09:49:00) [18]добавь :
Application.Initialize;
Application.CreateForm(TDataModule1, DataModule1);
Application.Run;
vajo (2003-05-30 08:09:00) [19]>Соловьев Меня просто временно не было у интернета.
С Соловбевым я согласен - это удобней. Зачем все создавать вручную, если можно просто бросить компанент.
Но мне всё ещё не понятно, что делать с вопросом
от (28.05.03 13:33) "Что это CoInitialize и что с этим делать?"
Может есть др. способы подключения к MSSQL?
Max Zyuzin (2003-05-28 15:21:00) [20]>Соловьев © (28.05.03 15:18)
Так часто бывает... :-) в общем хорошо подискутировали...