下面的代码是ado动态链接sql数据库的代码,但是就是连接不上,不知道是什么原因,大家帮忙一起解决一下。出现的错误是,跳除异常对话框,上面说,'无法打开登陆中请求的数据库Book_Data,登陆失败'
代码如下:var
Logintimes:integer=0;procedure TEnter_F.FormCreate(Sender: TObject);
var
DLYH_Q:TADOQuery;
ADOCommand:TADOCommand;
  s,DataPath : string;
begin
 Connect:=TADOConnection.Create(nil);
Connect.ConnectionString:='Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Book_Data';
Connect.LoginPrompt:=false;
try
Connect.Connected:=true;
except
 ADOCommand:=TADOCommand.Create(nil);
ADOCommand.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False';
DataPath:=ExtractFilePath(Application.ExeName) ;
s:='EXEC sp_attach_db @dbname = N'+char(39)+'Book_Data'+char(39)+','+
'@filename1 = N'+char(39)+DataPath+'Book_Data.MDF'+char(39)+
','+'@filename2 = N'+char(39)+DataPath+'Book_Data.LDF'+char(39);
ADOCommand.CommandText := s;
  ADOCommand.Execute();
end; DLYH_Q:=TADOQuery.Create(nil);
DLYH_Q.Connection:=Connect;
DLYH_Q.SQL.Clear;
DLYH_Q.SQL.Add('select 姓名 from 登录用户');
DLYH_Q.Open;
if DLYH_Q.RecordCount >0 then
while not DLYH_Q.Eof do
begin
XM_CB.Items.Add(DLYH_Q.FieldValues['姓名']);
DLYH_Q.Next;
end;
DLYH_Q.Close;
FreeAndNil(DLYH_Q);
  XM_CB.ItemIndex:=0;
end;

解决方案 »

  1.   

    你的Connect.ConnectionString:='Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Book_Data';中,没有指定Data Source,没有指定User ID,也没有指定Password,怎么可能连得上?
      

  2.   

    怎么动态获取主机名
    ===========================================================================
    你这个和主机名有什么关系?要么是动态获得数据库:ADOCommand:=TADOCommand.Create(nil);
    ADOCommand.ConnectionString := PromptDataSource(Handle, DataConnection.ConnectionString);
      

  3.   

    ConnectionString中没指定数据库服务器以及数据库
      

  4.   

    ADOCommand.ConnectionString := PromptDataSource(Handle, DataConnection.ConnectionString);
    上面要改一下:
    ADOCommand.ConnectionString := PromptDataSource(Handle, ADOCommand.ConnectionString);
    或者:
    ADOCommand.ConnectionString := PromptDataSource(Handle, ‘’);
    其中Handle是窗口句柄
      

  5.   

    就是!
    数据库用户(如sa)没都一个!
    建议:
    双击adoConnection,选SQL Server...,静态设置好连接字符,测试通过后,再把adoConnection的ConnectionString复制过来,再改里面的参数