下面的代码是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;
代码如下: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;
解决方案 »
- 使用tserversocket/tclientsocket 通讯问题!
- 求教像素滚屏的代码
- 转发问题~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- delphi for .net 让我失望!
- 如何用dbexpress 远程连接interbase数据库..............难啊
- 有谁知道delphi自带的winsight是做什么用的?怎么用?
- //这段代码是什么意思呀
- 我想学习api和基层函数,有什么数或下载或方法给建议,不胜感激
- 怎样在工程运行之前运行用户注册这个窗体?
- 我想发送这个列表的信息,跟这些时间点相同就执行
- ComboBoxEx1的焦点转移问题
- 本机与服务器
===========================================================================
你这个和主机名有什么关系?要么是动态获得数据库:ADOCommand:=TADOCommand.Create(nil);
ADOCommand.ConnectionString := PromptDataSource(Handle, DataConnection.ConnectionString);
上面要改一下:
ADOCommand.ConnectionString := PromptDataSource(Handle, ADOCommand.ConnectionString);
或者:
ADOCommand.ConnectionString := PromptDataSource(Handle, ‘’);
其中Handle是窗口句柄
数据库用户(如sa)没都一个!
建议:
双击adoConnection,选SQL Server...,静态设置好连接字符,测试通过后,再把adoConnection的ConnectionString复制过来,再改里面的参数