VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2018|回复: 10

大家一起来解决个棘手的问题

[复制链接]

3

主题

7

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-2 18:40:01 | 显示全部楼层 |阅读模式
下面的代码是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;


回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-2 20:30:01 | 显示全部楼层
幫你UP一個算了。。
回复

使用道具 举报

3

主题

7

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-1-2 22:18:01 | 显示全部楼层
怎么没有人回答了,难道都不会吗
回复

使用道具 举报

0

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-1-2 22:33:01 | 显示全部楼层
你的Connect.ConnectionString:='Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Book_Data';中,没有指定Data Source,没有指定User ID,也没有指定Password,怎么可能连得上?
回复

使用道具 举报

3

主题

7

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-1-2 23:51:02 | 显示全部楼层
怎么动态获取主机名
回复

使用道具 举报

0

主题

15

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-1-3 00:36:01 | 显示全部楼层
怎么动态获取主机名
===========================================================================
你这个和主机名有什么关系?要么是动态获得数据库:

ADOCommand:=TADOCommand.Create(nil);
ADOCommand.ConnectionString := PromptDataSource(Handle, DataConnection.ConnectionString);
回复

使用道具 举报

3

主题

7

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-1-3 11:09:01 | 显示全部楼层
你上面这个是动态连接吗,好像不是把,都没有指明数据库名称,
回复

使用道具 举报

0

主题

53

帖子

29.00

积分

新手上路

Rank: 1

积分
29.00
发表于 2020-1-3 13:51:01 | 显示全部楼层
ConnectionString中没指定数据库服务器以及数据库
回复

使用道具 举报

0

主题

15

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-1-3 20:06:01 | 显示全部楼层
你上面这个是动态连接吗,好像不是把,都没有指明数据库名称,
================================================================================
试一试不就知道了
回复

使用道具 举报

0

主题

15

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-1-3 20:36:01 | 显示全部楼层
ADOCommand.ConnectionString := PromptDataSource(Handle, DataConnection.ConnectionString);
上面要改一下:
ADOCommand.ConnectionString := PromptDataSource(Handle, ADOCommand.ConnectionString);
或者:
ADOCommand.ConnectionString := PromptDataSource(Handle, ‘’);
其中Handle是窗口句柄
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表